EnumerateObjectsUsingBlock: быстрее, чем цикл for-in? Зачем?
Я читал статью NSHipster по перечислению, в которой утверждается, что циклы for-in выполняются быстрее, чем enumerateObjectsUsingBlock:
:
Если вам не нужен числовой индекс во время итерации, почти всегда быстрее использовать цикл for/in NSFastEnumeration.
Этот ответ дает некоторое опровержение этой цитаты:
Быстрое перечисление требует перевода из внутреннего представления в представление для быстрого перечисления. Там есть над головой. Перечисление на основе блоков позволяет классу коллекции перечислять содержимое так же быстро, как и самый быстрый обход собственного формата хранения.
Каков процесс перевода, чтобы перейти от внутреннего представления к представлению для быстрого перечисления? Я понимаю, что там есть некоторые накладные расходы, но сколько?
1 ответ
Реальный ответ: нет разницы, которая имеет значение практически для любой реальной программы. и не беспокойтесь об этом, пока не найдете актуальную проблему во время количественной оценки производительности. и если скорость выполнения цикла имеет значение, то, скорее всего, ошибка в архитектуре вашего приложения.
С учетом сказанного, безусловно, есть интерес к академическому любопытству.
Увидеть:
Objective-C enumerateUsingBlock против быстрого перечисления?