Object-based design and development are thought to facilitate graceful
evolution of functionality, and thus enhance the reusability of softw
are components. They can also facilitate graceful performance evolutio
n. The performance of a layered object-based component can be made tun
able to meet changing needs by permitting clients to 'plug in' appropr
iate implementations for its constituent components through generic pa
rameters. If the components and their constituents are carefully desig
ned, then performance tuning is possible without direct modification t
o the internal details of the participating components, thus significa
ntly lowering the cost for performance evolution. The contribution of
this paper is to software practice. It explains how software engineers
can build performance-tunable components using C++ templates. It incl
udes empirical results confirming that tuning produces expected perfor
mance improvements with minimal code change. The results are especiall
y significant because they are scalable to arbitrarily large and heavi
ly layered software components and subsystems.