|ixx, ixx-av||14,500||A translator from IDL to C++|
|ktsim, ktsim-av||19,200||A cache simulator developed by Ted Romer et al. at UW|
|porky||64,300||The scalar optimization pass of the Stanford SUIF compiler|
|raytrace||3,000||A raytracer benchmark|
The -av versions of ixx and ktsim are the same as the non-av versions except that all methods are declared virtual, to experiment with the effectiveness of our implementation techniques on C++ written in a very extensible style.
|unopt||No Vortex optimizations (but full gcc -O2 optimizations on the generated C code)|
|trad-opt||Vortex intraprocedural, non-message optimizations, including elimination of redundant and dead loads & stores and elimination of dead object creations|
|inl||trad-opt plus automatic inlining (beyond any inlining performed by the C++ front-end due to inline directives)|
|i||inl plus intraprocedural static class analysis to optimize messages|
|i-cha||i plus class hierarchy analysis to automatically identify non-overridden methods|
|i-prof||i plus dynamic-profile-guided class prediction|
|i-cha-prof||i-cha plus -prof|
As shown in the "Raw, Detailed Data" table, class hierarchy analysis makes the all-virtual (-av) versions of the benchmarks run just as fast as the regular versions of the benchmarks.