Benjamin Summerton, autore del sistema di tracciamento dei raggi PSRayTracing, ha analizzato l'impatto sull'efficienza delle applicazioni derivante dall'uso nel codice in linguaggio C++ della parola chiave "final", introdotta nello standard C++11. La ragione per cui è stato condotto il test sono le affermazioni circolanti in rete che l'uso di "final" consenta di migliorare le prestazioni, le quali rimanevano limitate a valutazioni soggettive senza indicazione dei risultati dei cambiamenti.
I test condotti da Benjamin hanno mostrato che le prestazioni nell'uso di "final" dipendono fortemente dal compilatore. Con GCC, in effetti, in un numero notevole di casi le prestazioni aumentavano, mentre con Clang e MSVC le prestazioni nella maggior parte dei casi diminuivano, e in modo più significativo. Oltre al compilatore, la piattaforma ha avuto un grande impatto; ad esempio, il ridimensionamento delle prestazioni si manifestava maggiormente su un sistema con CPU AMD Ryzen 9 6900HX rispetto a un sistema con CPU Apple M1.


Ad esempio, su un sistema AMD Ryzen 9 6900HX con Ubuntu 23.10, compilando con Clang, nel 90% dei test l'uso di "final" ha mostrato un rallentamento di almeno il 5%, ma in il 2.5% dei casi si è registrato un'accelerazione di almeno il 5%. Per GCC, un rallentamento del 5% è stato registrato nello 0.9% dei casi, mentre un'accelerazione del 5% è stata registrata nel 15.8% dei casi. In MSVC, un rallentamento del 5% è stato osservato nel 26.2% dei test, mentre un'accelerazione del 5% nel 13.3%. L'autore della ricerca ha concluso la necessità di evitare l'uso di "final".
Fonte: opennet.ru
