Adaptive optimization for Self: Reconciling High Performance with Exploratory Programming

Urs Hölzle
Abstract: Crossing abstraction boundaries often incurs a substantial run-time overhead in the form of frequent procedure calls. Thus, pervasive use of abstraction, while desirable from a design standpoint, may lead to very inefficient programs. Aggressively optimizing compilers can reduce this overhead but conflict with interactive programming environments because they introduce long compilation pauses and often preclude source-level debugging. Thus, programmers are caught on the horns of two dilemmas: they have to choose between abstraction and efficiency, and between responsive programming environments and efficiency. This dissertation shows how to reconcile these seemingly contradictory goals by performing optimizations lazily.

Four new techniques work together to achieve this:

With better performance yet good interactive behavior, these techniques reconcile exploratory programming, ubiquitous abstraction, and high performance.

Ph.D. thesis, Computer Science Department, Stanford University.

To appear as a Stanford CSD technical report STAN-CS-TR-94-1520 and as a Sun Microsystems Laboratories technical report.

To get the PostScript file, click here.

Back to bibliography