Restrictions and Limitations of PBO
This section describes restrictions and limitations you must be aware of when using
•“Source Code Changes and PBO” (page 214)
•
•
NOTE: PBO calls malloc() during the instrumentation (+I) phase. If you replace libc malloc(3C) calls with your own version of malloc(), use the same parameter list (data types, order, number, and meaning of parameters) as the HP version. (For information on malloc(), see malloc(3C).)
Temporary Files
The linker does not modify
Source Code Changes and PBO
To avoid the potential problems described later in this section, PBO must be used only during the final stages of application development and performance tuning, when source code changes are the least likely to be made. Whenever possible, an application should be
What happens if you attempt to optimize a program using profile data that is older than the source files? For example, this can occur if you change source code and recompile with +P, but don't gather new profile data by
In that sequence of events, optimizations are still performed. However, full
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 may have this effect. If the user does not
214 Improving Your Application Performance