New trie data structures which support very fast search operations
Journal of Computer and System Sciences
SMALLTALK-80: the interactive programming environment
SMALLTALK-80: the interactive programming environment
Storing a Sparse Table with 0(1) Worst Case Access Time
Journal of the ACM (JACM)
Object oriented programming: an evolutionary approach
Object oriented programming: an evolutionary approach
Efficient implementation of lattice operations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient management of transitive relationships in large data and knowledge bases
SIGMOD '89 Proceedings of the 1989 ACM SIGMOD international conference on Management of data
Type-extension type test can be performed in constant time
ACM Transactions on Programming Languages and Systems (TOPLAS)
Eiffel: the language
Efficient handling of multiple inheritance hierarchies
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Efficient type inclusion tests
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Incremental encoding of multiple inheritance hierarchies
Proceedings of the eighth international conference on Information and knowledge management
Space and time-efficient memory layout for multiple inheritance
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
Proceedings of the International Workshop on Orders, Algorithms, and Applications
ORDAL '94 Proceedings of the International Workshop on Orders, Algorithms, and Applications
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Polychotomic Encoding: A Better Quasi-Optimal Bit-Vector Encoding of Tree Hierarchies
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
On-Line Graph Algorithms with SPQR-Trees
ICALP '90 Proceedings of the 17th International Colloquium on Automata, Languages and Programming
Representation of an Order as Union of Interval Orders
ORDAL '94 Proceedings of the International Workshop on Orders, Algorithms, and Applications
Bit-Vector Encoding for Partially Ordered Sets
ORDAL '94 Proceedings of the International Workshop on Orders, Algorithms, and Applications
Sparse Term Encoding for Dynamic Taxonomies
ICCS '96 Proceedings of the 4th International Conference on Conceptual Structures: Knowledge Representation as Interlingua
Efficient memory-reference checks for real-time java
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
The e Language: A Fresh Separation of Concerns
TOOLS '01 Proceedings of the Technology of Object-Oriented Languages and Systems
On-Line Planarity Testing
Dynamic type checking in jalapeño
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
A note on computing a maximal planar subgraph using PQ-trees
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
Enabling constant-time interface method dispatch in embedded Java processors
JTRES '07 Proceedings of the 5th international workshop on Java technologies for real-time and embedded systems
Perfect hashing as an almost perfect subtype test
ACM Transactions on Programming Languages and Systems (TOPLAS)
Implementing statically typed object-oriented programming languages
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
Given a type hierarchy, a subtyping test determines whether one type is a direct or indirect descendant of another type. Such tests are a frequent operation during the execution of object-oriented programs. The implementation challenge is in a space-efficient encoding of the type hierarchy that simultaneously permits efficient subtyping tests. We present a new scheme for encoding multiple- and single-inheritance hierarchies, which, in the standard benchmark hierarchies, reduces the footprint of all previously published schemes. Our scheme is called PQ-encoding (PQE) after PQ-trees, a data structure previously used in graph theory for finding the orderings that satisfy a collection of constraints. In particular, we show that in the traditional object layout model, the extra memory requirements for single-inheritance hierarchies is zero. In the PQE subtyping, tests are constant time, and use only two comparisons. The encoding creation time of PQE also compares favorably with previous results. It is less than 1 s on all standard benchmarks on a contemporary architecture, while the average time for processing a type is less than 1 ms. However, PQE is not an incremental algorithm. Other than PQ-trees, PQE employs several novel optimization techniques. These techniques are applicable also in improving the performance of other, previously published, encoding schemes.