2013-10-01 36 views
1

我讀NSHipster article on enumeration,謂其爲,在循環是快於enumerateObjectsUsingBlock:enumerateObjectsUsingBlock:比for-in循環更快嗎?爲什麼?

除非你真正需要的數字指標,而迭代,它幾乎總是快於NSFastEnumeration循環使用for /代替。

This answer提供了一些反駁該報價:

快速列舉需要從內部表現爲快速列舉代表性的翻譯。其中有架空。與基於塊的枚舉相比,集合類可以儘可能快地遍歷本機存儲格式來枚舉內容。

什麼是從內部表示移動到快速枚舉表示的翻譯過程?我明白有一些的開銷,但是有多少?

+0

@psoft這就是我的問題聯繫! – paulrehkugler

回答

7

真正的答案:對於幾乎任何真實世界的程序都沒有什麼差別。不要擔心它,直到您在性能量化過程中發現實際問題。如果循環的執行速度很重要,那麼您的整體應用程序體系結構可能就是bug。

這樣說,當然有一些值得追求的學術好奇心。

參見:

Objective-C enumerateUsingBlock vs fast enumeration?

相關問題