Анализ на влиянието на ключовата дума final върху производителността на C++ програми

Бенджамин Саммертън (Benjamin Summerton), автор на системата за трасировка на лъчи PSRayTracing, е анализирал влиянието на производителността на приложенията при използването на ключовата дума «final» в код на C++, въведена в стандарта C++11. Причината за провеждането на тестовете бяха разпространените в интернет твърдения, че използването на «final» може да увеличи производителността, които бяха базирани на оценъчни становища без обективни резултати от промените.

Тестовете, проведени от Бенджамин, показаха, че производителността при използването на «final» зависи силно от компилятора. При компилация с GCC наистина в значителен брой случаи производителността се увеличаваше, но при компилация с Clang и MSVC производителността в повечето случаи намаляваше, и то с по-осезаема разлика. Освен компилятора, голямо влияние оказа и платформата — например, намалението на производителността беше по-изразено на система с CPU AMD Ryzen 9 6900HX в сравнение с система с CPU Apple M1.

Анализ на влиянието на ключовата дума final върху производителността на C++ програми
Анализ на влиянието на ключовата дума final върху производителността на C++ програми

Например, на системата 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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster