While (1) vs. For (;;) Geschwindigkeitsvergleich
Inmitten einer lebhaften Diskussion stellte sich die Frage: Ist while (1 ) schneller ausführen als for (;;) in einer Endlosschleife? Zum Abschluss der Debatte begannen die Teilnehmer mit einer detaillierten Analyse.
Perl- und GCC-Ergebnisse
Eine gründliche Untersuchung ergab, dass in Perl beide Konstrukte identische Opcodes erzeugen. In GCC werden beide nach denselben Assembleranweisungen kompiliert. Daher ist der Geschwindigkeitsunterschied in diesen Umgebungen vernachlässigbar.
Schlussfolgerung
Im Mittelpunkt der Debatte steht die Behauptung, dass (1) zwar einen unnötigen Vergleich durchführt ( 1 == 1). Wie die Opcode-Analyse zeigt, findet dieser Vergleich jedoch nicht statt.
Während die Wahl zwischen diesen beiden Endlosschleifenkonstrukten möglicherweise keinen wesentlichen Einfluss auf die Leistung hat, ist es wichtig, sich daran zu erinnern, dass der Code innerhalb der Schleife optimiert wird ist weitaus wirkungsvoller.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3