Maison > développement back-end > C++ > Est-ce que le '

Est-ce que le '

Barbara Streisand
Libérer: 2024-12-18 15:35:09
original
811 Les gens l'ont consulté

Is the '

La comparaison est-elle '<' Plus rapide que '<=' ?

Dans certains scénarios impliquant du code de boucle complexe, il a été suggéré que le '<' L'opérateur peut être plus rapide que l'opérateur '<='. Pour enquêter sur cette affirmation, examinons le code machine sous-jacent généré pour ces comparaisons.

Génération de code

Sur les architectures x86, les comparaisons intégrales sont généralement implémentées à l'aide de deux instructions machine :

  1. Une instruction test ou cmp : ceci définit le registre EFLAGS avec différents bits d'état indiquant le résultat du comparaison.
  2. Une instruction jcc (saut) : ceci vérifie les EFLAGS et les branches en conséquence.

Pour les deux '<' et '<=', la première instruction (un cmp) est identique. La différence réside dans la deuxième instruction :

  • '<' : jge, saute si supérieur ou égal
  • '<=' : jg, saute si supérieur

Temps d'exécution

Le temps d'exécution est déterminé à la fois par la latence et débit. Dans le cas des instructions jge et jg, elles ont la même latence de zéro cycle et un débit de 0,5 cycle. Cela signifie qu'ils prendront le même temps à s'exécuter.

Comparaisons à virgule flottante

Les mêmes principes s'appliquent aux comparaisons à virgule flottante x87 à l'aide de l'instruction fucomip. Les instructions seta et setae utilisées pour vérifier le registre EFLAGS prennent également le même temps à s'exécuter.

Conclusion

Sur la plupart des architectures, le '<' et '<=' ont des temps d'exécution identiques pour les comparaisons intégrales et à virgule flottante. L'hypothèse selon laquelle '<' pourrait être plus rapide est incorrect dans le cas général.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal