Análisis del impacto de la palabra clave final en el rendimiento de programas C++

Benjamin Summerton, autor del sistema de trazado de rayos PSRayTracing, analizó el impacto en el rendimiento de las aplicaciones al utilizar en el código en C++ la palabra clave «final», que apareció en el estándar C++11. La razón para llevar a cabo las pruebas fueron las afirmaciones que circulan en la red, que indican que el uso de «final» puede mejorar el rendimiento, las cuales se limitaban a juicios estimativos sin señalar resultados de los cambios.

Las pruebas realizadas por Benjamin mostraron que el rendimiento al utilizar «final» depende en gran medida del compilador. Al compilar con GCC, en un número notable de casos, el rendimiento realmente aumentaba, pero al compilar con Clang y MSVC, el rendimiento disminuía en la mayoría de los casos, y de manera más significativa. Además, la plataforma también tuvo un gran impacto, por ejemplo, la caída en el rendimiento se evidenció más en el sistema con CPU AMD Ryzen 9 6900HX en comparación con el sistema con CPU Apple M1.

Análisis del impacto de la palabra clave final en el rendimiento de programas C++
Análisis del impacto de la palabra clave final en el rendimiento de programas C++

Por ejemplo, en un sistema AMD Ryzen 9 6900HX con Ubuntu 23.10 al compilar con Clang, en el 90% de las pruebas, el uso de «final» mostró una desaceleración de al menos el 5%, aunque en el 2.5% de los casos se registró una aceleración de al menos el 5%. Para GCC, la desaceleración del 5% se registró en el 0.9% de los casos, mientras que la aceleración del 5% se observó en el 15.8% de los casos. En MSVC, la desaceleración del 5% se observó en el 26.2% de las pruebas, mientras que la aceleración del 5% fue del 13.3%. Para el autor de este estudio, esto llevó a la conclusión de evitar el uso de «final».

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster