Chapter 8 289
Ways to Improve Performance
Profile-Based Optimization
What happens if you attempt to optimize a program using profile data
that is older than the source files? For example, this could occur if you
change source code and recompile with +P, but don't gather new profile
data by re-instrumenting the code.
In that sequence of events, optimizations will still be performed.
However, full profile-based optimizations will be performed only on those
procedures whose internal structure has not changed since the profile
data was gathered. For procedures whose structure has changed, the
following warning message is generated:
ucomp warning: Code for name changed since profile
database file flow.data built. Profile data for name
ignored. Consider rebuilding flow.data.
Note that it is possible to make a source code change that does not affect
the control flow structure of a procedure, but which does significantly
affect the profiling data generated for the program. In other words, a
very small source code change can dramatically affect the paths through
the program that are most likely to be taken. For example, changing the
value of a program constant that is used as a parameter or loop limit
value might have this effect. If the user does not re-profile the
application after making source code changes, the profile data in the
database will not reflect the effects of those changes. Consequently, the
transformations made by the optimizer could degrade the performance of
the application.
Profile-Based Optimization (PBO) and High-Level
Optimization (HLO)
High-level optimization, or HLO, consists of a number of optimizations,
including inlining, that are automatically invoked with the +O3 and +O4
compiler options. (Inlining is an optimization that replaces each call to a
routine with a copy of the routine's actual code.) +O3 performs HLO on
each module while +O4 performs HLO over the entire program and
removes unnecessary ADDIL instructions. Since HLO distorts profile
data, it is suppressed during the instrumentation phases of PBO.
When +I is specified along with +O3 or +O4, an I-SOM file is generated.
However, HLO is not performed during I-SOM generation. When the
I-SOM file is linked, using the +P option to do PBO, HLO is performed,
taking advantage of the profile data.
Example . The following example illustrates high-level optimization
with PBO: