В списке рассылки, на который я подписался, два хорошо осведомленных (IMO) программиста обсуждали некоторый оптимизированный код и говорили что-то вроде:
На процессорах, выпущенных 5-8 лет назад, было немного быстрее итерации для циклов назад (например,
for (int i=x-1; i>=0; i--) {...}
), потому что сравнениеi
с нолем более эффективно, чем сравнение его с некоторым другим числом. Но с очень недавними процессорами (например, с 2008-2009 гг.) Логика умозрительного загрузчика такова, что она работает лучше, если цикл for повторяется вперед (например,for (int i=0; i< x; i++) {...}
).
Мой вопрос в том, что это правда? Недавно изменились ли реализации ЦП, так что теперь итерация в прямом цикле имеет преимущество перед обратным повторением? Если да, то для чего это объяснение? то есть что изменилось?
(Да, я знаю, преждевременная оптимизация - это корень всего зла, просмотрите мой алгоритм, прежде чем беспокоиться о микро-оптимизации и т.д. и т.д.... в основном мне просто интересно)