Versione lunga ...
Un collega ha affermato oggi dopo aver visto il mio uso while (1)
in uno script Perl che for (;;)
è più veloce. Ho sostenuto che dovrebbero essere le stesse sperando che l'interprete possa ottimizzare eventuali differenze. Ho impostato uno script che eseguiva 1.000.000.000 di iterazioni in loop e lo stesso numero di loop while e registra il tempo tra. Non ho trovato differenze apprezzabili. Il mio collega ha detto che un professore gli aveva detto che while (1)
stava facendo un confronto 1 == 1
e che non lo for (;;)
era. Abbiamo ripetuto lo stesso test con 100 volte il numero di iterazioni con C ++ e la differenza era trascurabile. È stato tuttavia un esempio grafico di quanto può essere più veloce il codice compilato rispetto a un linguaggio di scripting.
Versione breve...
C'è qualche motivo per preferire un while (1)
over a for (;;)
se hai bisogno di un loop infinito per uscire?
Nota: se non è chiaro dalla domanda. Questa è stata puramente una divertente discussione accademica tra una coppia di amici. Sono consapevole che questo non è un concetto estremamente importante su cui tutti i programmatori dovrebbero essere angosciosi. Grazie per tutte le ottime risposte che io (e sono sicuro che altri) hanno imparato alcune cose da questa discussione.
Aggiornamento: il suddetto collega ha risposto con una risposta di seguito.
Citato qui nel caso venga sepolto.
Veniva da un programmatore di assemblaggio AMD. Ha dichiarato che i programmatori C (il popolo) non si rendono conto che il loro codice ha inefficienze. Ha detto oggi, comunque, che i compilatori gcc sono molto bravi e mettono fuori gioco persone come lui. Ha detto per esempio, e mi ha parlato del
while 1
vsfor(;;)
. Lo uso ora per abitudine ma gcc e soprattutto gli interpreti faranno la stessa operazione (un salto del processore) per entrambi i giorni, poiché sono ottimizzati.