Final关键字对C++程序性能的影响分析

PSRayTracing 光线追踪系统的作者 Benjamin Summerton 分析了在 C++ 代码中使用 C++11 标准中出现的“final”关键字对应用程序性能的影响。之所以进行测试,是因为网上流传有说法称使用“final”会提高性能,但仅限于价值判断,并未表明更改结果。

本杰明的测试表明,使用“final”时的性能高度依赖于编译器。在 GCC 中构建时,性能实际上在很多情况下有所提高,但在 Clang 和 MSVC 中构建时,大多数情况下性能下降,而且更明显。同时,除了编译器之外,平台也有很大的影响;例如,在AMD Ryzen 9 6900HX CPU的系统上性能下降比在Apple M1 CPU的系统上更加明显。

Final关键字对C++程序性能的影响分析
Final关键字对C++程序性能的影响分析

例如,在运行 Ubuntu 9 的 AMD Ryzen 6900 23.10HX 系统上,在 Clang 中构建时,使用“final”时 90% 的测试显示速度至少下降 5%,但在 2.5% 的情况下加速至少 5%被记录。对于 GCC,5% 的情况下记录了 0.9% 的放缓,5% 的情况下记录了 15.8% 的加速。在 MSVC 中,5% 的测试中观察到 26.2% 的减速,5% 的测试中观察到 13.3% 的加速。该研究的作者本人得出的结论是,有必要避免使用“final”。

来源: opennet.ru

添加评论