Benjamin Summerton, auteur du système de traçage de rayons PSRayTracing, a analysé l'impact de l'utilisation du mot-clé « final » dans le code C++, introduit dans la norme C++11, sur la performance des applications. Ce test a été mené en réponse aux déclarations circulant sur Internet selon lesquelles l'utilisation de « final » pourrait améliorer la performance, évaluations qui reposaient sur des jugements sans résultats concrets.
Les tests réalisés par Benjamin ont montré que la performance de l'utilisation de « final » dépendait fortement du compilateur. En effet, lors de la compilation avec GCC, la performance augmentait de manière significative dans un nombre notable de cas, tandis qu'avec Clang et MSVC, la performance diminuait dans la plupart des cas, et de façon plus marquée. De plus, la plateforme avait un impact considérable ; par exemple, la baisse de performance était plus prononcée sur un système avec un processeur AMD Ryzen 9 6900HX que sur un système avec un processeur Apple M1.


Par exemple, sur un système AMD Ryzen 9 6900HX avec Ubuntu 23.10, en compilant avec Clang, dans 90 % des tests, l'utilisation de « final » a entraîné un ralentissement d'au moins 5 %, tandis que dans 2,5 % des cas, une accélération d'au moins 5 % a été observée. Avec GCC, un ralentissement de 5 % a été noté dans 0,9 % des cas, tandis qu'une accélération de 5 % s'est produite dans 15,8 % des cas. Sous MSVC, un ralentissement de 5 % a été observé dans 26,2 % des tests, tandis qu'une accélération de 5 % dans 13,3 %. L'auteur de l'étude a conclu qu'il était préférable d'éviter l'utilisation de « final ».
Source : opennet.ru
