here is a brief description of PGO (C++ Compiler) from the Intel Website (Link: https://software.intel.com/en-us/code-samples/intel-compiler/intel-compiler-features/ProfileGuidedOptimization):
"... Profile-guided Optimization (PGO) improves application performance by re-ordering code layout to reduce instruction-cache problems, shrinking code size, and reducing branch mispredictions. PGO provides information to the compiler about areas of an application that are most frequently executed so the compiler is able to be more selective and specific in optimizing the application."
This is information is formulated vaguely.
Open questions are for example:
Which areas of the application are most frequently executed?
What exactly means "more selective and specific in optimizing"?
To really understand what is happening here, we should have more information available. Especially, if the "training set" for PGO is not representative for the real application running afterwards.
Is there detailed information about PGO available to answer such questions?
Many thanks in advance.
You may find more info on PGO here: https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-profile-guided-optimization-pgo
If the "training set" for PGO is not representative for the real application then you will not benefit from this optimization.