Two promising optimization techniques for object-oriented languages are type feedback (dynamic) and concrete type inference (static). We directly compare the two techniques, evaluating their effectiveness on a suite of 23 SELF programs while keeping other factors constant. Our results show that both systems inline >95% of all sends and deliver similar overall performance with one exception: SELF's automatic coercion of machine integers to arbitrary-precision integers upon overflow confounds type inference and slows down arithmetic-intensive benchmarks. We discuss several other issues which, given the comparable run-time performance, may influence the choice between type feedback and type inference.
|
481
|
Self: The power of simplicity
– Ungar, Smith
- 1987
|
|
276
|
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
– Dean, Grove, et al.
- 1995
|
|
202
|
Efficient implementation of the Smalltalk-80 system
– Deutsch, Schiffman
- 1984
|
|
195
|
Object-oriented type inference
– Palsberg, Schwartzbach
- 1991
|
|
155
|
Precise concrete type inference for object-oriented languages
– Plevyak, Chien
- 1994
|
|
145
|
An efficient implementation of self - a dynamically-typed object-oriented language based on prototypes
– Chambers, Ungar, et al.
- 1989
|
|
135
|
Optimizing dynamically-dispatched calls with run-time type feedback
– Holze, Ungar
- 1994
|
|
116
|
Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented
– Chambers, Ungar
- 1990
|
|
91
|
The Cartesian Product Algorithm: Simple and Precise Type Inference of Parametric Polymorphism
– Agesen
- 1995
|
|
78
|
Quantifying Behavioral Differences Between C and C++ Programs
– Calder, Grunwald, et al.
- 1994
|
|
77
|
Type Inference of SELF: Analysis of Objects with Dynamic and Multiple Inheritance
– Agesen, Palsberg, et al.
- 1993
|
|
71
|
Making type inference practical
– Oxhj, Palsberg, et al.
- 1992
|
|
48
|
TS: An Optimizing Compiler for Smalltalk
– Johnson, Graver, et al.
- 1988
|
|
47
|
Inferring Types in Smalltalk
– Suzuki
- 1981
|
|
46
|
Obtaining Sequential Efficiency for Concurrent Object-Oriented Languages
– Plevyak, Zhang, et al.
- 1995
|
|
43
|
Constraint-Based Type Inference and Parametric Polymorphism
– Agesen
- 1994
|
|
33
|
Compile-time Analysis of Object-Oriented Programs
– Vitek, Horspool, et al.
- 1992
|
|
31
|
Sifting Out the Gold: Delivering Compact Applications from an ObjectOriented Exploratory Programming Environment
– Agesen, Ungar
- 1994
|
|
30
|
Compilation and delayed evaluation in APL
– Guibas, Wyatt
- 1978
|
|
28
|
Static Type Determination and Aliasing for C
– Pande, Ryder
- 1994
|
|
18
|
The Dynamic Incremental Compiler of APL\3000
– Johnston
- 1979
|
|
17
|
Measurement and application of dynamic receiver class distributions
– Garrett, Dean, et al.
- 1994
|
|
16
|
Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches
– Hlzle, Chambers, et al.
- 1991
|
|
15
|
Adaptive Optimization for SELF: Reconciling High Performance with Exploratory Programming
– Hlzle
- 1994
|
|
15
|
Design and Construction of Flexible and Efficient Interactive Programming Systems
– Mitchell
- 1970
|
|
10
|
A dynamic incremental compiler for an interpretative language
– Dyke
- 1977
|
|
6
|
A Third-Generation SELF Implementation: Reconciling Responsiveness with Performance
– Hlzle, Ungar
- 1994
|
|
5
|
Efficient Cloning to Eliminate Dynamic Dispatch in ObjectOriented Languages. Unpublished report
– Plevyak, Chien
- 1994
|
|
2
|
Precise Concrete Type Inference and its Use in Program Optimization. Unpublished report
– Plevyak, Chien
- 1994
|