gpt4 book ai didi

swift - 展开 swift 可选类型时,性能会受到什么影响(如果有的话)?

转载 作者:搜寻专家 更新时间:2023-10-31 22:08:35 25 4
gpt4 key购买 nike

如果我有 var x: CustomType?,使用展开 x! 时性能会受到什么影响?有没有这样写的意思:

if let x1 = x {
f(x1)
f2(x1)
}

或者我可以写出相同的性能:

f(x!)
f2(x!)

注意:我知道在第一种情况下会检查可选项是否有效,但是如果我知道此可选项在此代码中 100% 有效怎么办?

最佳答案

除非你正在编译 -Ounchecked(并且不要),它们最终会非常相似,因为运行时仍然会检查可选的包含一个值(因为如果你强制解包一个 nil 值,你会得到一个运行时断言,它不只是访问内存,就好像它不是 nil 一样)。可能会给 if let 一个优势的是,您告诉编译器更多关于您正在尝试做什么的信息,这使它有更好的机会对其进行优化。

但是,与其担心这个,不如全神贯注地想知道哪个更快,更重要的是,你一直在思考使用 ! 是否安全,因为你的变量肯定可能几乎肯定不会为零(哎呀,除了那一次),并更好地利用它。

而是将时间花在优化真正重要的事情上。当您可以在 O(n log n) 中执行操作时,查找您在 O(n^2) 中执行操作的位置。考虑缓存位置。考虑在编译时比运行时做更多的事情。不要为可能比更安全的替代方案多花费一个 CPU 指令的事情而大惊小怪。

关于swift - 展开 swift 可选类型时,性能会受到什么影响(如果有的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28551225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com