Versão longa...
Um colega de trabalho afirmou hoje depois de ver meu uso while (1)
em um script Perl que for (;;)
é mais rápido. Argumentei que eles deveriam ser os mesmos, esperando que o intérprete otimize quaisquer diferenças. Configurei um script que executaria 1.000.000.000 de iterações de loop e o mesmo número de loops while e registrei o tempo entre eles. Não pude encontrar nenhuma diferença apreciável. Meu colega de trabalho disse que um professor havia dito que ele while (1)
estava fazendo uma comparação 1 == 1
e que for (;;)
não estava. Repetimos o mesmo teste com 100x o número de iterações com C ++ e a diferença foi insignificante. No entanto, foi um exemplo gráfico de quão rápido o código compilado pode ser em comparação com uma linguagem de script.
Versão curta...
Existe alguma razão para preferir um while (1)
over a for (;;)
se você precisar de um loop infinito para sair?
Nota: Se não estiver claro a partir da pergunta. Essa foi uma discussão acadêmica puramente divertida entre dois amigos. Estou ciente de que este não é um conceito super importante que todos os programadores deveriam agonizar. Obrigado por todas as ótimas respostas que eu (e tenho certeza que outros) aprendemos algumas coisas com essa discussão.
Atualização: O colega de trabalho acima mencionado pesou com uma resposta abaixo.
Citado aqui, caso seja enterrado.
Ele veio de um programador de montagem AMD. Ele afirmou que os programadores C (o povo) não percebem que seu código tem ineficiências. Ele disse hoje que os compiladores gcc são muito bons e colocam pessoas como ele fora do negócio. Ele disse, por exemplo, e me contou sobre o
while 1
vsfor(;;)
. Eu o uso agora por hábito, mas o gcc e especialmente os intérpretes farão a mesma operação (um salto no processador) nos dois dias, pois eles são otimizados.