Research has shown that binary optimizers can achieve further improvements in performance for programs that run on RISC-like systems. Two types of postcompilation optimizers have been developed. Static analyzers modify a fully compiled and linked program by performing further examination at the machine code level. Dynamic optimizers collect information while a program is running under its typical load, and then use that feedback information to revise the code and data sections optimally in a refinement phase of compiling and linking. This latter technique is called profile-guided optimization. Such techniques can be useful in squeezing the maximum performance out of today's hardware systems for very cycle-intensive large applications. This is an active area of investigation, but it falls outside the scope we have set for this book. |