c++optimizationgccverificationpgo

The risks of using PGO (profile-guided optimization) with production environment


I have a system (Linux & C++) doing intensive signal/image processing operations. I would like to use PGO to improve performance of our application.

Are there any risks / potential issues I should be aware of when using PGO ?

Are unit tests + E2E tests enough to verify that PGO didn't break anything ?


Solution

  • Microsoft has system that is modifying conditional jumps based on the usage statistics plus it condenses frequently used pieces of code into smaller number of pages. This essentially compacts effective memory footprint several times and reduces CPU consumption for 20-50%.

    This system was extensively used both in user and in kernel mode. The quality of this system was very high. In 100% of cases it was doing its job correctly. I do not see even minor down sides.

    It might happen that some other similar system might be less reliable than that of Microsoft. That one from Microsoft was extremely good.