使用 Instruments 分析 Swift,_swift_retain_ 到底是什么?

Profiling Swift with Instruments, what exactly is _swift_retain_?

我正在使用 Instruments 分析我的 Swift iOS 应用程序。大量时间花在了

_swift_retain_(swift::HeapObject*) libSwiftCore.dylib

_swift_release_(swift::HeapObject*) libSwiftCore.dylib

我的代码主要是创建(并超出范围)结构和元组。据我了解,因为它们是值对象,所以它们是在堆栈上分配的,因此我不应该看到这么多堆操作。

_swift_retain__swift_release_ 究竟是什么意思?

这些函数 _swift_retain__swift_release_Swifts automatic reference counting (ARC). For detailes, see the source in stdlib 的一部分。 ARC 似乎经常被唠叨 w.r.t。诸如此类的性能问题,但令我惊讶的是您仅使用值类型就看到了这种行为。然而,这可能是由于引擎盖后面的 ARC 造成的。