- Un article qui explore les possibilités d’optimisation d’une boucle en code C générée par Clang
- La boucle incrémente ou décrémente un nombre en fonction des caractères d’une chaîne.
- L’auteur réorganise la boucle pour l’optimiser autour des caractères
p et s plutôt que du terminateur null.
- L’auteur supprime les branchements conditionnels en utilisant de l’arithmétique et des déplacements conditionnels.
- Le code optimisé atteint un gain de performance significatif de 6,73 fois par rapport au code d’origine.
- L’auteur essaie également d’autres techniques d’optimisation, mais constate qu’elles ralentissent le code.
- La configuration de benchmark comprend un CPU AMD Ryzen 5 5625U ainsi que les dernières versions de Clang et GCC.
- La conclusion est qu’un travail manuel et des optimisations en assembleur peuvent, dans certains cas, apporter des gains de performance importants.
1 commentaires
Avis Hacker News
ifau lieu d’une instructionswitch.sete/cmovet atteindre la même vitesse que le code assembleur optimisé.