JVM '02 Abstract
Stress-testing Control Structures for Dynamic Dispatch in Java
Olivier Zendra, Karel Driesen, McGill University
Abstract
Dynamic dispatch, or late binding of function calls, is a salient
feature of object-oriented programming languages like C++ and Java.
It can be costly on deeply pipelined processors,
because dynamic calls translate to hard-to-predict indirect
branch instructions, which are prone to causing pipeline bubbles.
Several alternative implementation techniques have been designed in
the past in order to perform dynamic dispatch without
relying on these expensive branch instructions.
Unfortunately it is difficult to compare the performance of these
competing techniques, and the issue of which technique is best under
what conditions still has no clear answer.
In this study we aim to answer this question, by measuring the
performance of four alternative
control structures for dynamic dispatch on several
execution environments, under a variety of precisely controlled
execution conditions.
We stress test these control structures using micro-benchmarks,
emphasizing their strenghts and weaknesses, in order to determine the
precise execution circumstances under which a particular technique
performs best.
- View the full text of this paper in
HTML,
PDF, and
PostScript. Until August 2003, you will need your USENIX membership identification in order to access the full papers.
The Proceedings are published as a collective work, © 2002 by the USENIX Association. All Rights Reserved. Rights to individual papers remain with the author or the author's employer. Permission is granted for the noncommercial reproduction of the complete work for educational or research purposes. USENIX acknowledges all trademarks within this paper.
- If you need the latest Adobe Acrobat Reader, you can download it from Adobe's site.
- To become a USENIX Member, please see our Membership Information.
|