Kenwood HP 9000 Personal Computer User Manual


 
276 Chapter 8
Ways to Improve Performance
Profile-Based Optimization
A Simple Example
Suppose you want to apply PBO to an application called sample. The
application is built from a C source file sample.c. Discussed below are
the steps involved in optimizing the application.
Step 1 Instrumentation
First, compile the application for instrumentation and level 2
optimization:
$ cc -v -c +I -O sample.c
/opt/langtools/lbin/cpp sample.c /var/tmp/ctm123
/opt/ansic/lbin/ccom /var/tmp/ctm123 sample.o -O2 -I
$ cc -v -o sample.inst +I -O sample.o
/usr/ccs/bin/ld /opt/langtools/lib/icrt0.o -u main \
-o sample.inst sample.o -I -lc
At this point, you have an instrumented program called sample.inst.
Step 2 Profile
Assume you have two representative input files to use for profiling,
input.file1 and input.file2. Now execute the following three
commands:
$ sample.inst < input.file1
$ sample.inst < input.file2
$ mv flow.data sample.data
The first invocation of sample.inst creates the flow.data file and
places an entry for that executable file in the data file. The second
invocation increments the counters for sample.inst in the flow.data
file. The third command moves the flow.data file to a file named
sample.data.
Step 3 Optimize
To perform profile based optimizations on this application, relink the
program as follows:
$ cc -v -o sample.opt +P +pgm sample.inst \
+df sample.data sample.o
/usr/ccs/bin/ld /usr/ccs/lib/crt0.o -u main -o sample.opt \
+pgm sample.inst +df sample.data sample.o -P -lc
Note that it was not necessary to recompile the source file. The +pgm
option was used because the executable name used during
instrumentation, sample.inst, does not match the current output file
name, sample.opt. The +df option is necessary because the profile
database file for the program has been moved from flow.data to
sample.data.