【问题标题】:Why @autoreleasepool is 6 times faster than NSAutoreleasePool?为什么@autoreleasepool 比 NSAutoreleasePool 快 6 倍?
【发布时间】:2014-01-29 03:51:38
【问题描述】:

请帮我解释一下为什么 @autoreleasepool 比 NSAutoreleasePool 快 6 倍。

请打开--> https://developer.apple.com/library/ios/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

然后转到转换项目时的常见问题 -- 转到第三个项目符号

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    最终,这一切都归结为对 objc_autoreleasePoolPush 和 objc_autoreleasePoolPop 的调用。那么问题是: [[NSAutoreleasePool alloc] init]; 有多少开销。和[池排水];添加在这些调用之上,因为它必须在内部拥有它们。

    答案显然是“相当多”。它的简单实现必须分配整个对象并释放它,但我们可以放心地假设 Apple 已经优化了 NSAutoreleasePool 比这更多(例如,通过缓存池实例)。尽管如此,相对于函数调用而言,获取所涉及的对象会产生一些开销。

    【讨论】:

    • NSAutoreleasePool 分配一个NSAutoreleasePool 对象(或从缓存中获取现有对象); @autoreleasepool 没有。 NSAutoreleasePool 发送多个 Objective-C 消息; @autoreleasepool 没有。
    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2013-06-06
    • 2018-08-12
    相关资源
    最近更新 更多