Бенджамин Саммертон (Benjamin Summerton), автор на системата за рендериране на лъчи PSRayTracing, анализира влиянието на производителността на приложенията от използването в кода на езика C++ на ключовата дума „final“, появила се в стандарта C++11. Причината за провеждане на тестовете бяха разпространените в интернет твърдения, че използването на „final“ позволява повишаване на производителността, които бяха ограничени до оценъчни съждения без посочване на резултатите от промените.
Проведеното от Бенджамин тестване показа, че производителността при използване на „final“ е силно зависима от компилятора. При компилиране с GCC действително в значителен брой случаи производителността се е увеличавала, но при компилиране с Clang и MSVC производителността в повечето случаи намаляваше, и то по-осезаемо. Освен компилятора, голямо влияние оказа и платформата, например, спадът в производителността се проявяваше по-силно на системата с CPU AMD Ryzen 9 6900HX, отколкото на системата с CPU Apple M1.


Например, на системата AMD Ryzen 9 6900HX с Ubuntu 23.10, при компилиране с Clang в 90% от тестовете при използване на „final“ се наблюдаваше забавяне на работата с поне 5%, но в 2.5% от случаите се фиксираше ускорение с поне 5%. За GCC забавлението с 5% се фиксираше в 0.9% от случаите, а ускорението с 5% — в 15.8% от случаите. При MSVC забавление с 5% се наблюдаваше в 26.2% от тестовете, а 5% ускорение — в 13.3%. Авторът на изследването стигна до извода, че е необходимо да се избягва използването на „final“.
Източник: opennet.ru
