Reconciling responsiveness with performance in pure object-oriented languages
- 1 July 1996
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 18 (4) , 355-400
- https://doi.org/10.1145/233561.233562
Abstract
Dynamically dispatched calls often limit the performance of object-oriented programs, since opject-oriented programming encourages factoring code into small, reusable units, thereby increasing the frequency of these expensive operations. Frequent calls not only slow down execution with the dispatch overhead per se, but more importantly they hinder optimization by limiting the range and effectiveness of standard global optimizations. In particular, dynamically dispatched calles prevent standard interprocedual optimizations that depend on the availability of a static call graph. The SELF implementation described here offers tow novel approaches to optimization. Type feedback speculatively inlines dynamically dispatched calls based on profile information that predicts likely receiver classes. Adaptive optimization reconciles optimizing compilation with interactive performance by incrementally optimizing only the frequently executed parts of a program. When combined, these two techniques result in a system that can execute programs significantly faster than previous systems while retaining much of the interactiveness of an interpreted system.Keywords
This publication has 16 references indexed in Scilit:
- Profile-guided receiver class predictionACM SIGPLAN Notices, 1995
- Type feedback vs. concrete type inferenceACM SIGPLAN Notices, 1995
- Memory system performance of programs with intensive heap allocationACM Transactions on Computer Systems, 1995
- Multi‐way versus one‐way constraints in user interfaces: Experience with the deltablue algorithmSoftware: Practice and Experience, 1993
- Profile‐guided automatic inline expansion for C programsSoftware: Practice and Experience, 1992
- Cache behavior of combinator graph reductionACM Transactions on Programming Languages and Systems, 1992
- An experiment with inline substitutionSoftware: Practice and Experience, 1991
- A study of a C function inlinerSoftware: Practice and Experience, 1988
- An execution profiler for modular programsSoftware: Practice and Experience, 1983
- The Dynamic Incremental Compiler of APL\3000ACM SIGAPL APL Quote Quad, 1979