Lange Version...
Ein Mitarbeiter behauptete heute, nachdem er meine Verwendung while (1)
in einem Perl-Skript gesehen hatte, for (;;)
das schneller ist. Ich argumentierte, dass sie gleich sein sollten, in der Hoffnung, dass der Dolmetscher alle Unterschiede optimieren würde. Ich habe ein Skript eingerichtet, das 1.000.000.000 für Schleifeniterationen und die gleiche Anzahl von while-Schleifen ausführt und die Zeit dazwischen aufzeichnet. Ich konnte keinen nennenswerten Unterschied feststellen. Mein Kollege sagte, ein Professor habe ihm gesagt, dass der while (1)
einen Vergleich mache 1 == 1
und der for (;;)
nicht. Wir haben den gleichen Test mit dem 100-fachen der Anzahl der Iterationen mit C ++ wiederholt und der Unterschied war vernachlässigbar. Es war jedoch ein anschauliches Beispiel dafür, wie viel schneller kompilierter Code im Vergleich zu einer Skriptsprache sein kann.
Kurzfassung ...
Gibt es einen Grund, eine while (1)
gegenüber einer zu bevorzugen, for (;;)
wenn Sie eine Endlosschleife benötigen, aus der Sie ausbrechen können?
Hinweis: Wenn es aus der Frage nicht klar ist. Dies war eine rein lustige akademische Diskussion zwischen ein paar Freunden. Mir ist bewusst, dass dies kein überaus wichtiges Konzept ist, über das sich alle Programmierer quälen sollten. Vielen Dank für all die tollen Antworten, die ich (und ich bin sicher andere) aus dieser Diskussion gelernt habe.
Update: Der oben genannte Mitarbeiter hat mit einer Antwort unten gewogen.
Zitiert hier für den Fall, dass es begraben wird.
Es kam von einem AMD-Montageprogrammierer. Er erklärte, dass C-Programmierer (die Leute) nicht erkennen, dass ihr Code Ineffizienzen aufweist. Er sagte heute jedoch, dass gcc-Compiler sehr gut sind und Leute wie ihn aus dem Geschäft bringen. Er sagte zum Beispiel, und erzählte mir von dem
while 1
vsfor(;;)
. Ich benutze es jetzt aus Gewohnheit, aber gcc und insbesondere Dolmetscher werden heutzutage für beide die gleiche Operation (einen Prozessorsprung) ausführen, da sie optimiert sind.