为什么@autoreleasepool比NSAutoreleasePool快6倍?

时间:2014-01-29 03:51:39

标签: objective-c

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

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

然后在转换项目时转到常见问题 - 转到第3个子弹

1 个答案:

答案 0 :(得分:1)

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

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