Profile-Guided Receiver Class Prediction
David Grove,
Jeffrey Dean,
Charles Garrett, and
Craig Chambers
The use of dynamically-dispatched procedure calls is a key mechanism
for writing extensible and flexible code in object-oriented
languages. Unfortunately, dynamic dispatching imposes a runtime
performance penalty. Some recent implementations of pure
object-oriented languages have utilized profile-guided receiver class
prediction to reduce this performance penalty, and some researchers
have argued for applying receiver class prediction in hybrid languages
like C++. We performed a detailed examination of the dynamic profiles
of eight large object-oriented applications written in C++ and Cecil,
determining that the receiver class distributions are strongly peaked
and stable across both inputs and program versions through time. We
describe techniques for gathering and manipulating profile information
at varying degrees of precision, particularly in the presence of
optimizations such as inlining. Our implementation of profile-guided
receiver class prediction in the Cecil compiler improves the
performance of large Cecil applications by a factor of two over solely
static optimizations.
Published in the proceedings of OOPSLA'95, Austin, TX, October, 1995.
To get the PostScript file, click
here.
An earlier version
of this paper appeared as UW-CS TR 94-03-05.
Cecil/Vortex
Project