Benjamin Summerton, autor systemu śledzenia promieni PSRayTracing, przeanalizował wpływ użycia w kodzie C++ słowa kluczowego „final”, które pojawiło się w standardzie C++11, na wydajność aplikacji. Powodem przeprowadzenia testów były krążące w sieci twierdzenia, że zastosowanie „final” może zwiększyć wydajność, które były ograniczone do osądów bez wskazania wyników zmian.
Przeprowadzone przez Benjamina testy pokazały, że wydajność przy użyciu „final” mocno zależy od kompilatora. Podczas kompilacji w GCC w istotnej liczbie przypadków rzeczywiście wydajność wzrastała, ale przy kompilacji w Clang i MSVC w większości przypadków wydajność malała, przy czym bardziej zauważalnie. Przy tym duży wpływ, oprócz kompilatora, miała platforma; na przykład spadki wydajności były bardziej widoczne na systemie z procesorem AMD Ryzen 9 6900HX niż na systemie z procesorem Apple M1.


Na przykład, na systemie AMD Ryzen 9 6900HX z Ubuntu 23.10 przy kompilacji w Clang w 90% testów przy użyciu „final” odnotowano spowolnienie pracy co najmniej o 5%, ale w 2.5% przypadków stwierdzono przyspieszenie co najmniej o 5%. Dla GCC spowolnienie o 5% wystąpiło w 0.9% przypadków, a przyspieszenie o 5% — w 15.8% przypadków. W MSVC spowolnienie o 5% odnotowano w 26.2% testów, a przyspieszenie o 5% — w 13.3%. Autor badania doszedł do wniosku, że należy unikać użycia „final”.
Źródło: opennet.ru
