EnumerateObjectsUsingBlock: быстрее, чем цикл for-in? Зачем?

Я читал статью NSHipster по перечислению, в которой утверждается, что циклы for-in выполняются быстрее, чем enumerateObjectsUsingBlock::

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

Этот ответ дает некоторое опровержение этой цитаты:

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

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

1 ответ

Решение

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

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

Увидеть:

Objective-C enumerateUsingBlock против быстрого перечисления?

Другие вопросы по тегам