The Space Overhead of Customization


Sylvia Dieckmann and Urs Hölzle
Abstract: Customization aims to improve the performance of pure object-oriented languages by compiling multiple copies of a source method, each of them specialized for a certain revceiver type. Like other code duplication techniques, it gains performance by trading code space for better speed. Unfortunately, customization can significantly increase code space, especially for larger programs. We show that customization increases memory usage by almost a factor of three for some applications in the Self-93 system.

We analyze and quantify the factors that lead to this space overhead and identify strategies to eliminate most of it. We focus on dynamically-compiled systems like Self-93 where it is impractical or undesirable to use whole-program analysis or programmer-directed profiling to guide customization decisions. Our experiments show that a combination of relatively straight-forward strategies can bring the code space consumption of customization to within 34% or less of a completely non-customizing system. Thus, even in dynamically-compiled systems customization and efficient memory usage need not be mutually exclusive.

Keywords: customization, space overhead, Self, dynamic compilation


Postscript File / PDF for Technical Report TRCS97-21, Computer Science Department, University of California, Santa Barbara, June 1997.

[ Tech Reports ] [ Computer Science ]