next up previous
Next: Static Cache Simulation Up: Control-Flow and Call-Graph Analysis Previous: Call Graph Transformation into

Performance Evaluation

This section evaluates the benefits of control-flow partitioning and function-instance graphs to reduce the number of measurement points. Table 1 summarizes the performance tests for user programs, benchmarks, and UNIX utilities. The numbers were produced by modifying the back-end of an optimizing compiler VPO (Very Portable Optimizer) [] to determine measurement points by partitioning the control flow and by creating the function-instance graph.

  figure227
Figure: Construction of Function-Instance Graph

  table233
Table 1: Test Set of C Programs

The size of the programs varied between about 2kB and 18kB (see column 3). The number of instructions executed for each program comprised a range of 1 to 19 million using realistic input data for each program (see column 4) . Column 5 indicates the percentage of measurement points required for our method versus the number of measurement points inserted in conventional on-the-fly analysis (i.e., one measurement point per basic block). Our method requires only 76% of the measurement points required for the traditional trace-driven analysis, i.e. about 24% fewer measurement points statically. The run-time savings (column 6) are even higher, requiring only about 69% of the measurement points executed under traditional trace-driven analyses. The additional dynamic savings are due to reducing sequences of basic blocks inside loops to fewer UPs, sometimes just to a single UP. In other words, unique paths tend to be longer than basic blocks. For example, an iteration through the innermost loop may only require a single measurement point in one path (with multiple basic blocks).



Robert Palmer
Mon May 19 10:38:07 EDT 1997