0
我刚才在看一个关于swift优化的讨论,他们使用了一个带有5个变量的结构的例子3个字符串一个数组和一个字典。他们说降低引用计数你可以使用包装类。有人可以制作一个虚拟的,我可能会更好地理解它。Swift包装类
我刚才在看一个关于swift优化的讨论,他们使用了一个带有5个变量的结构的例子3个字符串一个数组和一个字典。他们说降低引用计数你可以使用包装类。有人可以制作一个虚拟的,我可能会更好地理解它。Swift包装类
如果您的结构具有许多属性为引用类型的结构存在性能问题,则将使用包装类。
一个通用的包装类:
class Wrapper<T> {
var value: T // or "let" instead of "var"
init(_ value: T) { self.value = value }
}
这是因为,如果你把它分配给另一个变量属性的所有指针被复制,因此,所有引用计数(见ARC)得到增加(并在年底减)。
此问题主要发生在您循环遍历此类结构的大数组时,每次迭代都会创建一个新变量。
对于包装类,只有其引用计数才会增加和减少一次。
例子:
struct Big {
// "n" properties which have reference semantics
...
...
}
// "m" count
let hugeArray = [Big(), Big(), Big(), ...]
// m * n reference count operations (+1, -1)
for element in hugeArray {
// do something
}
// if huge array is of type [Wrapper<Big>]
// m * 1 reference count operations (+1, -1)
for element in hugeArray {
// do something
}
边注:这样的类可以提高性能。因为它“改变”了包装类型的语义,并且没有值类型,所以如果写入它,将其分配或传递为参数,请小心使用它。
你可以分享一个关于“快速优化”的演讲,看看你到底在说什么吗? – pacification