Abstract Optimizing code at run time is appealing because run-time optimizations can make use of values and invariants that cannot be exploited statically.
Dynamic optimization can yield code that is superior to statically optimal code.
Dynamic optimization is profitable only when the time spent optimizing and compiling code is repaid by improved performance. Our goal is to design and implement a compiler architecture, called Dynamo, that provides effective dynamic optimization with little programmer effort and low run-time overhead. An important characteristic of Dynamo will be its staged compilation model. To reduce the overhead of dynamic compilation, it is necessary to perform some analysis, translation, and optimization at compile time. Selective dynamic optimization is also critical to obtaining good performance, since the time spent performing unnecessary optimizations contributes to a program's overall execution time.