next up previous contents
Next: Real Time Stopwatches Up: Profiling Mechanisms Previous: gprof --- Call

pixie --- Basic Block Counting

Unlike prof or gprof profiling, pixie profiling does not require giving an option at compile- or link-time. The pixie utility directly operates on an executable --- it analyzes the code to find the basic blocks boundaries, and then instruments the code to keep exact counts of how many times each basic block is executed. No PC sampling is performed. Instead, the post-processor (often a pixie-aware prof post-processor) converts the basic block counts into ideal time by summing the ideal cycle times of the instructions in each basic block. One commonly acknowledged flaw of this technique is that ideal time may be considerably skewed from real time due to cache effects; another less commonly discussed flaw is that the cycle times of instruction sequences may dramatically shift between different implementations of the same instruction set architecture.gif

Unlike prof and gprof, which are nearly universally available, pixie is available only for some MIPS workstations and Digital OSF/1 Alpha workstations. Some compilers (e.g., GNU gcc 2.6.2; SunOS 4.1.3 cc; however, many do not) have an option -a which cause them to emit code that count basic block execution. However, such counts are currently only used by the tcov program (which displays code coverage) and not by available prof or gprof profiling data post-processors.

Reinventing Computing, MIT AI Lab. Author: (Ping Huang)