| |
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
|