Results 11 - 20
of
35
Compact Dispatch Tables for Dynamically Typed Programming Languages
, 1996
"... This paper explores an alternative called compact dispatch tables suited to environments with high requirements in time and space efficiency. Compact dispatch tables are one solution to achieve fast, and constant-time, message passing in dynamically typed languages and to bring them one step clos ..."
Abstract
-
Cited by 12 (1 self)
- Add to MetaCart
This paper explores an alternative called compact dispatch tables suited to environments with high requirements in time and space efficiency. Compact dispatch tables are one solution to achieve fast, and constant-time, message passing in dynamically typed languages and to bring them one step closer to the efficiency of statically typed languages
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...
Fast Algorithms for Compressed Multi-Method Dispatch Tables Generation
, 1996
"... The efficiency of dynamic dispatch is a major impediment to the adoption of multi-methods in object languages. In this paper, we propose a simple multi-method dispatch scheme based on compressed dispatch tables. This scheme is applicable to most existing object languages, and guarantees that dynamic ..."
Abstract
-
Cited by 11 (0 self)
- Add to MetaCart
The efficiency of dynamic dispatch is a major impediment to the adoption of multi-methods in object languages. In this paper, we propose a simple multi-method dispatch scheme based on compressed dispatch tables. This scheme is applicable to most existing object languages, and guarantees that dynamic dispatch is performed in constant time, a major requirement for some languages and applications. We provide efficient algorithms to build the compressed dispatch tables, and demonstrate the effectiveness of our scheme by real measurements performed on a large object-oriented application. Finally, we relate our scheme to existing techniques, including a detailed comparison with a recent proposal.
Multi-Method Dispatch Using Multiple Row Displacement
- LNCS
, 1999
"... Multiple Row Displacement (MRD) is a new dispatch technique for multi-method languages. It is based on compressing an n-dimensional table using an extension of the single-receiver row displacement mechanism. This paper presents the new algorithm and provides experimental results that compare it with ..."
Abstract
-
Cited by 9 (3 self)
- Add to MetaCart
Multiple Row Displacement (MRD) is a new dispatch technique for multi-method languages. It is based on compressing an n-dimensional table using an extension of the single-receiver row displacement mechanism. This paper presents the new algorithm and provides experimental results that compare it with implementations of existing techniques: compressed n-dimensional tables, look-up automata and single-receiver projection. MRD uses comparable space to the other techniques, but has faster dispatch performance.
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.
Efficient Dispatch of Multimethods in Constant Time Using Dispatch Trees
, 1996
"... Optimizing method dispatch is a central issue in object-oriented language implementation. Besides overall efficiency, a major requirement for some languages and applications is constant-time performance. In systems with multi-methods, these requirements are still harder to meet. The compressed dispa ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
Optimizing method dispatch is a central issue in object-oriented language implementation. Besides overall efficiency, a major requirement for some languages and applications is constant-time performance. In systems with multi-methods, these requirements are still harder to meet. The compressed dispatch table scheme, presented in [AGS94], was the first to meet them. Its compression algorithm is based on the definition of pole types. In this report, we investigate another structure, namely the dispatch tree, showing that it can also meet those requirements. We show that pole types can be used to compress dispatch trees, and we describe some optimizations of compressed dispatch trees. The resulting run-time structures are yet smaller than compressed dispatch tables.
Multi-Method Dispatch Using Single-Receiver Projections
, 1998
"... A new technique for multi-method dispatch, called Single-Receiver Projections and abbreviated SRP, is presented. It operates by performing projections onto single-receiver dispatch tables, and thus benefits from existing research into single-receiver dispatch techniques. It provides method dispat ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
A new technique for multi-method dispatch, called Single-Receiver Projections and abbreviated SRP, is presented. It operates by performing projections onto single-receiver dispatch tables, and thus benefits from existing research into single-receiver dispatch techniques. It provides method dispatch in O(k), where k is the arity of the method. Unlike existing multi-method dispatch techniques, it also maintains the set of all applicable methods. This extra information allows SRP to support languages like CLOS that use next-method. SRP is also highly incremental in nature, so it is well-suited for languages that require separate compilation and languages that allow methods and classes to be added at run-time. SRP uses less data-structure memory than all existing multi-method techniques and has the second fastest dispatch time. Furthermore, if the other techniques are extended to support all applicable methods, SRP becomes the fastest dispatch techniques. RESEARCH PAPER Subject...
Fast and Compact Dispatching for Dynamic Object-Oriented Languages
, 1997
"... Dynamic Object-Oriented languages allows for dynamic definition of new classes, new generic functions and new methods. This paper proposes a single and compact data structure to, at the same time, facilitate the addition of new classes, generic functions or methods, and still ensure a fast method se ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
Dynamic Object-Oriented languages allows for dynamic definition of new classes, new generic functions and new methods. This paper proposes a single and compact data structure to, at the same time, facilitate the addition of new classes, generic functions or methods, and still ensure a fast method selection.
Efficient Predicate Dispatching
, 1998
"... The speed of method dispatching is an important issue in the overall performance of object-oriented programs. We have developed an algorithm for constructing efficient dispatch functions for the general predicate dispatching model, which generalizes single dispatching, multiple dispatching, predica ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
The speed of method dispatching is an important issue in the overall performance of object-oriented programs. We have developed an algorithm for constructing efficient dispatch functions for the general predicate dispatching model, which generalizes single dispatching, multiple dispatching, predicate classes and classifiers, and patternmatching. Our algorithm generates a lookup DAG each of whose nodes represents an N-way test of the class or value of a formal or other expression. Our algorithm implements each of these N-way tests with a binary decision tree blending class identity tests, class range tests, and table lookups. Our algorithm exploits any available static information (from type declarations or class analysis) to prune unreachable paths from the lookup DAG, and uses any available dynamic profile information to minimize the expected time to traverse the binary decision trees. We measure the effectiveness of our dispatching algorithms on a collection of large Cecil and Java...

