Performance-Parameterized Reusable Software Components

Current programming languages support construction of parameterized reusable components that can be adapted and composed to create new functionality. For widespread reuse, software components must also have readily adaptable performance. This paper introduces language mechanisms for creating such performance-parameterized reusable software components and for controlling their performance by "plugging in" appropriate constituent components. A key element of the proposed approach is that it provides inexpensive performance tuning. It permits performance of a tunable component to be changed without modifications to the functionality of the component or its clients; in principle, without the need for re-compilation or re-validation of functionality.