Multiple Implementations and Performance Issues

Observations
  • A typical abstract component has multiple implementations that vary in performance.
  • Typical components are “layered” from other lower-level components.
  • By switching implementations of lower-level components the performance of top-level components can be tuned.
Performance-tunable components
  • Are parameterized by implementations of lower-level components.
  • Allow performance to be tuned without altering functionality.

 Introductory Article on the Topic

S. Sreerama, D. Fleming, and M. Sitaraman, “Graceful Object-Based Performance Evolution,” Software - Practice and Experience, Vol. 27, No. 1, January 1997, 111-122.
 

Abstract

Object-based design and development are thought to facilitate graceful evolution of functionality, and thus enhance the reusability of software components. They can also facilitate graceful performance evolution. The performance of a layered object-based component can be made tunable to meet changing needs by permitting clients to 'plug in' appropriate implementations for its constituent components through generic parameters. If the components and their constituents are carefully designed, then performance tuning is possible without direct modification to the internal details of the participating components, thus significantly 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 includes empirical results confirming that tuning produces expected performance improvements with minimal code change. The results are especially significant because they are scalable to arbitrarily large and heavily layered software components and subsystems.

Other Publications



 
This site maintained by Steven Atkinson, with assistance from Murali Sitaraman