gpt4 book ai didi

ios - Swift nil 检查性能

转载 作者:搜寻专家 更新时间:2023-11-01 06:20:52 27 4
gpt4 key购买 nike

我有一个执行 nil 检查的计算属性。

var _textSize: CGSize?
var textSize: CGSize {
get {
if _textSize == nil {
// compute _textSize
}
return _textSize
}
}

在 Instruments 中进行分析时,== nil检查显示为:

Instruments

我相信static == infix<A where ...> (A?, A?) -> Bool是零支票。是这种情况吗?如果是这样,零支票是否昂贵?

最佳答案

正确答案实际上取决于您所说的“昂贵”是什么意思。

我的观点

但是,恕我直言,检查值是否为 nil 不是昂贵的操作。

及时执行O(1) ,所以它是一个常数时间,不会根据其他值增长。最后,这对 CPU 来说是一个非常简单的操作。

类与结构

我想如果计算出的属性确实属于 Class 会有差异(在所需时间方面)或 Struct .

在第一种情况(Class)中,操作系统需要从 Heap 中检索类的实例,然后检查属性是否为 nil . Heap位于快速的 RAM 上(但不是设备上最快的内存)。

结构

另一方面,如果我们使用 Struct ,有关计算属性的数据可在 Stack 上获得如果比 Heap 更快.

总结

所以,总而言之:

  1. 检查 Class 的计算属性是否是nil
  2. 检查 Struct 的计算属性是否是nil 非常快

关于ios - Swift nil 检查性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34581081/

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