我正在使用Instruments对我的Swift iOS应用进行性能分析。大量时间花在下面这个地方:
_swift_retain_(swift::HeapObject*) libSwiftCore.dylib
并且
_swift_release_(swift::HeapObject*) libSwiftCore.dylib
我的代码大多是创建(并超出范围)结构体和元组。我理解由于它们是值对象,它们被分配在栈上,因此我不应该看到太多的堆操作。
_swift_retain_
和_swift_release_
具体是什么意思?
_swift_retain_
和_swift_release_
是 Swift 自动引用计数 (ARC) 的一部分。有关详细信息,请参见 stdlib 中的源代码。ARC 似乎经常因性能问题而受到抱怨,例如此问题,但我很惊讶您仅使用值类型就看到了这种行为。然而,谁知道 ARC 在幕后做了什么... - dfrib