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.
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.