4

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 ?

Motti
  • 110,860
  • 49
  • 189
  • 262
tommyk
  • 3,187
  • 7
  • 39
  • 61
  • 2
    I have experience using similar thing on Windows. Extremely useful and helpful. No downsides. – Kirill Kobelev Oct 08 '12 at 07:19
  • 4
    *Are unit tests + E2E tests enough to verify that PGO didn't [brake](http://en.wiktionary.org/wiki/brake) anything ?* => Oh, sweet irony! I believe you mean *break* ;) – Matthieu M. Oct 08 '12 at 07:24
  • What would you consider "break"? An optimizer bug? Uncovering a latent race condition? Pessimizing code? On the latter, see here: http://stackoverflow.com/questions/7834752 – peterchen Oct 12 '12 at 08:00
  • All the points you mentioned I would consider as a "break". – tommyk Oct 12 '12 at 08:04
  • @KirillKobelev make your comment an answer so that I can accept it. – tommyk Oct 18 '12 at 09:41

1 Answers1

2

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.

Kirill Kobelev
  • 10,252
  • 6
  • 30
  • 51