enumerateObjectsUsingBlock:比for-in循环更快吗?为什么?

时间:2013-10-01 14:19:38

标签: objective-c nsfastenumeration

我正在阅读NSHipster article on enumeration,声称for-in循环比enumerateObjectsUsingBlock:更快:

  

除非你在迭代时确实需要数字索引,否则使用for / in NSFastEnumeration循环几乎总是更快。

This answer为该引用提供了一些反驳:

  

快速枚举需要从内部表示转换为快速枚举的表示。其中有开销。基于块的枚举允许集合类以最快遍历本机存储格式的速度枚举内容。

从内部表示转移到快速枚举的表示的翻译过程是什么?我知道那里有一些开销,但是多少?

1 个答案:

答案 0 :(得分:7)

真正的答案:对于几乎所有现实世界的程序都没有区别。在性能量化过程中发现实际问题之前不要担心。如果循环的执行速度很重要,那么整个应用程序架构可能就是错误。

话虽如此,肯定有一些学术上的好奇心值得追求。

请参阅:

Objective-C enumerateUsingBlock vs fast enumeration?