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