Heim > Backend-Entwicklung > C++ > Ist das '

Ist das '

Barbara Streisand
Freigeben: 2024-12-18 15:35:09
Original
806 Leute haben es durchsucht

Is the '

Ist Vergleich '<' Schneller als „<=“?

In bestimmten Szenarien mit komplexem Schleifencode wurde vorgeschlagen, dass „<“ Der Operator ist möglicherweise schneller als der Operator „<=“. Um dieser Behauptung nachzugehen, untersuchen wir den zugrunde liegenden Maschinencode, der für diese Vergleiche generiert wurde.

Codegenerierung

Auf x86-Architekturen werden Integralvergleiche typischerweise mithilfe von zwei Maschinenanweisungen implementiert:

  1. Ein Test- oder CMP-Befehl: Dieser setzt das EFLAGS-Register mit verschiedenen Statusbits, die das Ergebnis des Befehls anzeigen Vergleich.
  2. Eine JCC-Anweisung (Sprung): Diese überprüft die EFLAGS und verzweigt entsprechend.

Für beide '<' und '<='-Vergleiche ist die erste Anweisung (ein cmp) identisch. Der Unterschied liegt in der zweiten Anweisung:

  • '<': jge, springe, wenn größer oder gleich
  • '<=': jg, springe, wenn größer oder gleich

Ausführungszeit

Die Ausführungszeit wird sowohl von der Latenz als auch von der Latenz bestimmt Durchsatz. Im Fall von jge- und jg-Anweisungen haben sie die gleiche Latenz von null Zyklen und einen Durchsatz von 0,5 Zyklen. Dies bedeutet, dass die Ausführung genauso lange dauert.

Gleitkommavergleiche

Die gleichen Prinzipien gelten für x87-Gleitkommavergleiche mit der fucomip-Anweisung. Die zur Überprüfung des EFLAGS-Registers verwendeten Seta- und Setae-Anweisungen benötigen ebenfalls die gleiche Zeit zur Ausführung.

Fazit

Auf den meisten Architekturen ist das „<“ und „<=“-Operatoren haben identische Ausführungszeiten für Integral- und Gleitkommavergleiche. Die Annahme, dass „<“ könnte schneller sein, ist im allgemeinen Fall falsch.

Das obige ist der detaillierte Inhalt vonIst das '. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage