Длинная версия...
Сотрудник заявил сегодня, увидев мое использование while (1)
в Perl script, которое for (;;)
работает быстрее. Я утверждал, что они должны быть одинаковыми, надеясь, что интерпретатор будет оптимизировать любые различия. Я настроил script, который запустил бы 1,000,000,000 для итераций цикла и столько же циклов while и записи времени между ними. Я не обнаружил заметной разницы. Мой коллега сказал, что профессор сказал ему, что while (1)
делал сравнение 1 == 1
, а for (;;)
- нет. Мы повторили тот же тест с 100x числом итераций с С++, и разница была незначительной. Тем не менее, это был наглядный пример того, насколько быстрее может быть скомпилированный код и язык сценариев.
Краткая версия...
Есть ли причина предпочесть a while (1)
по сравнению с for (;;)
, если вам нужен бесконечный цикл для выхода из?
Примечание: Если это не ясно из вопроса. Это была просто забавная академическая дискуссия между двумя друзьями. Я знаю, что это не очень важная концепция, которую все программисты должны мучить. Спасибо за все замечательные ответы, которые я (и я уверен, другие) узнали из этого обсуждения несколько вещей.
Обновление: Вышеупомянутый сотрудник был взят с ответом ниже.
Цитируется здесь, если он похоронен.
Это был сборщик программ AMD. Он заявил, что программисты C (poeple) не понимают, что их код имеет неэффективность. Он сказал сегодня, однако, gcc-компиляторы очень хороши и выставляют таких людей как он бизнеса. Он сказал, например, и рассказал мне о
while 1
vsfor(;;)
. Я использую это сейчас по привычке, но gcc и особенно переводчики будет выполнять ту же операцию (скачок процессора) для обоих этих дней, поскольку они оптимизированы.