【发布时间】:2016-04-14 13:06:27
【问题描述】:
我正在使用 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) 的一部分。详情请见the source in stdlib。 ARC似乎经常被w.r.t唠叨。诸如此类的性能问题,但我很惊讶您看到这种行为仅使用值类型。但是,谁知道 ARC 在幕后发生了什么…… -
嗯,它说“引用计数仅适用于类的实例”,我必须有一个重分配的类。
-
是的,同一句话让我对你的情况感到困惑,因为你说你主要有值类型。
-
@dfri 如果您将您的 cmets 移至答案,我可以将其标记为已回答
-
你没有提到这些结构里面有什么。如果它们包含对象,那么肯定会有 ARC 活动。
标签: ios swift performance instruments