274 Chapter 8
Ways to Improve Performance
Profile-Based Optimization
Profile-Based Optimization
In profile-based optimization (PBO), the compiler and linker work
together to optimize an application based on profile data obtained from
running the application on a typical input data set. For instance, if
certain procedures call each other frequently, the linker can place them
close together in the a.out file, resulting in fewer instruction cache
misses, TLB misses, and memory page faults when the program runs.
Similar optimizations can be done at the basic block levels of a
procedure. Profile data is also used by the compiler for other general
tasks, such as code scheduling and register allocation.
General Information about PBO
• “When to Use PBO”
• “Restrictions and Limitations of PBO”
• “Compatibility with 9.0 PBO”
Using PBO
• “How to Use PBO”
• “Instrumenting (+I/-I)”
• “Profiling”
• “Optimizing Based on Profile Data (+P/-P)”
• “Selecting an Optimization Level with PBO”
• “Using PBO to Optimize Shared Libraries”
• “Using PBO with ld -r”
NOTE The compiler interface to PBO is currently supported only by the C, C++,
and FORTRAN compilers.