In der heutigen Welt spielt es keine Rolle, wenn überhaupt.
Dynamische Verzweigungsvorhersagen (über die seit Jahrzehnten nachgedacht wird (siehe Eine 1996 veröffentlichte Analyse der Schemata für dynamische Verzweigungsvorhersagen )) sind weit verbreitet.
Ein Beispiel hierfür finden Sie im ARM-Prozessor. Aus dem Arm Info Center zur Zweigvorhersage
Um die Genauigkeit der Verzweigungsvorhersage zu verbessern, wird eine Kombination aus statischen und dynamischen Techniken verwendet.
Die Frage ist dann: "Was ist dynamische Verzweigungsvorhersage im Armprozessor?" Das fortgesetzte Lesen der dynamischen Verzweigungsvorhersage zeigt, dass ein 2-Bit-Vorhersageschema (in der Veröffentlichung beschrieben) Informationen darüber erstellt, ob die Verzweigung stark oder schwach genommen wird oder nicht.
Mit der Zeit (und mit der Zeit meine ich ein paar Durchgänge durch diesen Block) werden Informationen darüber aufgebaut, in welche Richtung der Code gehen wird.
Bei der statischen Vorhersage wird untersucht , wie der Code selbst aussieht und wie die Verzweigung beim Test erfolgt - zu einer vorherigen Anweisung oder einer weiteren im Code:
Das im ARM1136JF-S-Prozessor verwendete Schema sagt voraus, dass nicht alle bedingten Vorwärtszweige und alle Rückwärtszweige genommen werden. Rund 65% aller Zweige gehen genügend Nicht-Verzweigungszyklen voraus, um vollständig vorhergesagt zu werden.
Wie von Sparky erwähnt, basiert dies auf dem Verständnis, dass Schleifen häufig Schleifen sind. Die Schleife verzweigt sich rückwärts (am Ende der Schleife befindet sich eine Verzweigung, um sie oben neu zu starten) - dies geschieht normalerweise.
Die Gefahr, den Compiler zu erraten, besteht darin, dass Sie nicht wissen, wie dieser Code tatsächlich kompiliert (und optimiert) wird. Und zum größten Teil spielt es keine Rolle. Bei der dynamischen Vorhersage wird zweimal durch die Funktion ein Überspringen der Schutzanweisung für eine vorzeitige Rückkehr vorhergesagt. Wenn die Leistung von zwei gespülten Rohrleitungen von kritischer Leistung ist, gibt es andere Dinge, über die Sie sich Sorgen machen müssen.
Die Zeit, die benötigt wird, um einen Stil über den anderen zu lesen, ist wahrscheinlich von größerer Bedeutung - Code sauber zu machen, damit ein Mensch ihn lesen kann, da der Compiler gut funktioniert, egal wie chaotisch oder idealisiert Sie den Code schreiben.