Versión larga...
Un compañero de trabajo afirmó hoy después de ver mi uso while (1)
en un script de Perl que for (;;)
es más rápido. Argumenté que deberían ser los mismos con la esperanza de que el intérprete optimizara cualquier diferencia. Configuré un script que ejecutaría 1,000,000,000 para iteraciones de bucles y la misma cantidad de bucles while y registraría el tiempo entre ellos. No pude encontrar una diferencia apreciable. Mi compañero de trabajo dijo que un profesor le había dicho que while (1)
estaba haciendo una comparación 1 == 1
y que for (;;)
no. Repetimos la misma prueba con 100x el número de iteraciones con C ++ y la diferencia fue insignificante. Sin embargo, fue un ejemplo gráfico de cuánto más rápido puede ser el código compilado frente a un lenguaje de script.
Version corta...
¿Hay alguna razón para preferir un while (1)
sobre a for (;;)
si necesita un bucle infinito para salir?
Nota: Si no está claro en la pregunta. Esta fue una discusión académica puramente divertida entre un par de amigos. Soy consciente de que este no es un concepto súper importante que todos los programadores deberían agonizar. Gracias por todas las excelentes respuestas que (y estoy seguro de que otros) he aprendido algunas cosas de esta discusión.
Actualización: el mencionado compañero de trabajo intervino con una respuesta a continuación.
Citado aquí en caso de que quede enterrado.
Provenía de un programador de ensamblaje de AMD. Afirmó que los programadores de C (la gente) no se dan cuenta de que su código tiene ineficiencias. Sin embargo, dijo hoy que los compiladores de gcc son muy buenos y dejan a personas como él fuera del negocio. Dijo por ejemplo, y me habló de la
while 1
frentefor(;;)
. Lo uso ahora por costumbre, pero gcc y especialmente los intérpretes harán la misma operación (un salto de procesador) durante estos dos días, ya que están optimizados.