Results 1 -
4 of
4
Message dispatch on pipelined processors
- In ECOOP'95 Conference Proceedings
, 1995
"... Abstract. Object-oriented systems must implement message dispatch efficiently in order not to penalize the object-oriented programming style. We characterize the performance of most previously published dispatch techniques for both statically- and dynamically-typed languages with both single and mul ..."
Abstract
-
Cited by 22 (1 self)
- Add to MetaCart
Abstract. Object-oriented systems must implement message dispatch efficiently in order not to penalize the object-oriented programming style. We characterize the performance of most previously published dispatch techniques for both statically- and dynamically-typed languages with both single and multiple inheritance. Hardware organization (in particular, branch latency and superscalar instruction issue) significantly impacts dispatch performance. For example, inline caching may outperform C++-style “vtables ” on deeply pipelined processors even though it executes more instructions per dispatch. We also show that adding support for dynamic typing or multiple inheritance does not significantly impact dispatch speed for most techniques, especially on superscalar machines. Instruction space overhead (calling sequences) can exceed the space cost of data structures (dispatch tables), so that minimal table size may not imply minimal run-time space usage.
Software and Hardware Techniques for Efficient Polymorphic Calls
, 1999
"... Object-oriented code looks different from procedural code. The main difference is the increased frequency of polymorphic calls. A polymorphic call looks like a procedural call, but where a procedural call has only one possible target subroutine, a polymorphic call can result in the execution of one ..."
Abstract
-
Cited by 11 (1 self)
- Add to MetaCart
Object-oriented code looks different from procedural code. The main difference is the increased frequency of polymorphic calls. A polymorphic call looks like a procedural call, but where a procedural call has only one possible target subroutine, a polymorphic call can result in the execution of one of several different subroutines. The choice is made at run time, and depends on the type of the receiving object (the first argument). Polymorphic calls enable the construction of clean, modular code design. They allow the programmer to invoke operations on an object without knowing its exact type in advance. This flexibility incurs an overhead: in general, polymorphic calls must be resolved at run time. The overhead of this run time polymorphic call resolution can lead a programmer to sacrifice clarity of design for more efficient code, by replacing instances of polymorphic calls by several single-target procedural calls, removing run time polymorphism. This practice typically leads to a m...
Message Dispatch on Modern Computer Architectures
- Conference Proceedings
, 1994
"... Object-oriented systems must implement message dispatch efficiently in order not to penalize the objectoriented programming style. We characterize the performance of most previously published dispatch techniques for both statically- and dynamically-typed languages with both single and multiple inher ..."
Abstract
-
Cited by 8 (2 self)
- Add to MetaCart
Object-oriented systems must implement message dispatch efficiently in order not to penalize the objectoriented programming style. We characterize the performance of most previously published dispatch techniques for both statically- and dynamically-typed languages with both single and multiple inheritance. Hardware organization (in particular, branch latency and superscalar instruction issue) significantly impacts dispatch performance. For example, inline caching may outperform C++-style "vtables" on deeply pipelined processors even though it executes more instructions per dispatch. We also show that adding support for dynamic typing or multiple inheritance does not significantly impact dispatch speed for most techniques, especially on superscalar machines. Also, instruction space overhead (calling sequences) can exceed the space cost of data structures (dispatch tables), so that minimal table size may not imply minimal runtime space usage.
Multiple Dispatch Techniques: a survey.
"... . Multiple argument dispatching is a natural extension of single-argument, or receiver-based, dispatch. Recently several techniques were proposed that aim to make multiple dispatch an efficient operation. However, none of the studies has actually analyzed run-time behavior. In this study we compare ..."
Abstract
- Add to MetaCart
. Multiple argument dispatching is a natural extension of single-argument, or receiver-based, dispatch. Recently several techniques were proposed that aim to make multiple dispatch an efficient operation. However, none of the studies has actually analyzed run-time behavior. In this study we compare several techniques, two of which are presented for the first time, by writing down abstract assembly code call sequences. We discuss the expected instruction-level parallelism and give formulas for the critical path. This preliminary analysis gives us promising candidates for later, more rigorous experimentation. 1. Introduction A popular myth among the object-literate holds that message passing is intrinsically inefficient. This is not the case. Implementations of message passing, a.k.a message dispatching, realize single-argument polymorphism, which is a natural and powerful tool to factorize program code. To accomplish the same factorization in a procedural language, one would have to c...

