2013-10-01 2 views
1

Я читал NSHipster article on enumeration, которая утверждает, что для в петли быстрее, чем enumerateObjectsUsingBlock::Является enumerateObjectsUsingBlock: быстрее, чем цикл for-in? Зачем?

Если вы на самом деле не нужен числовой индекс в то время как итерация, это почти всегда быстрее использовать для/в цикле NSFastEnumeration вместо этого.

This answer предоставляет некоторые опровержения для этой цитаты:

Быстрой нумерация требует перевода из внутреннего представления в представление для быстрого перечисления. В этом есть накладные расходы. Перечисление на основе блоков позволяет классу коллекции перечислить содержимое так же быстро, как самый быстрый обход собственного формата хранения.

Что такое процесс перевода, чтобы перейти от внутреннего представления к представлению для быстрого перечисления? Я понимаю, что есть наверху, но сколько?

+0

@psoft это то, что я связан с вопросом! – paulrehkugler

ответ

7

Настоящий ответ: Никакая разница, которая имеет значение практически для любой программы реального мира. и Не беспокойтесь об этом, пока не найдете актуальную проблему во время количественной оценки производительности. и Если скорость выполнения цикла имеет значение, то ваша общая архитектура приложения, вероятно, является ошибкой.

С учетом сказанного, безусловно, стоит научное любопытство.

См:

Objective-C enumerateUsingBlock vs fast enumeration?