Довга версія ...
Співробітник сьогодні стверджував, побачивши моє використання while (1)
в сценарії Perl, який for (;;)
швидше. Я стверджував, що вони повинні бути однаковими, сподіваючись, що перекладач оптимізує будь-які відмінності. Я створив сценарій, який би запускав 1 000 000 000 для ітерацій циклу і стільки ж циклів у той час, як і записувати час між ними. Я не міг знайти помітної різниці. Мій колега сказав, що професор сказав йому, що while (1)
він робив порівняння 1 == 1
і цеfor (;;)
не так. Ми повторили той самий тест із 100-кратним числом повторень із C ++, і різниця була незначною. Однак це був графічний приклад того, наскільки швидше компільований код може бути порівняно з мовою сценаріїв.
Коротка версія...
Чи є якась причина віддавати перевагу while (1)
над «a», for (;;)
якщо вам потрібна нескінченна петля?
Примітка: Якщо це не зрозуміло з питання. Це була суто весела академічна дискусія між парою друзів. Я знаю, що це не надто важлива концепція, над якою повинні мучитися всі програмісти. Дякую за всі чудові відповіді, які я (і я впевнений, що інші) дізнався кілька речей з цієї дискусії.
Оновлення: Згаданий вище колега зважився на відповідь нижче.
Цитується тут на випадок, якщо його поховають.
Він прийшов від програміста зі складання AMD. Він заявив, що програмісти C (poeple) не розуміють, що їх код має неефективність. Сьогодні він сказав, що компілятори gcc дуже хороші, і таких людей, як він, виключають з бізнесу. За його словами , наприклад, і розповів мені про
while 1
протиfor(;;)
. Я використовую його зараз за звичкою, але gcc і, особливо, інтерпретатори будуть робити ту ж операцію (стрибок процесора) і в ці дні, оскільки вони оптимізовані.