Publication | Closed Access
Empirical assessment of object-oriented implementations with multiple inheritance and static typing
18
Citations
30
References
2009
Year
Software MaintenanceEngineeringCompiler TechnologyObject-oriented ModelingComputer ArchitectureSoftware EngineeringObject OrientationSoftware AnalysisFormal VerificationStatic TypingCompilersMultiple InheritanceDynamic CompilationObject-oriented DesignHigh-level Programming LanguageCompiler SupportComputer EngineeringObject-oriented ImplementationsComputer ScienceType SystemOptimizing CompilerSoftware DesignObject-oriented LanguagesRuntime EfficiencyProgram AnalysisSoftware TestingFormal MethodsObject-oriented ProgrammingParallel ProgrammingSystem Software
Object-oriented languages involve a threefold tradeoff between runtime efficiency, expressiveness (multiple inheritance), and modularity, i.e. open-world assumption (OWA). Runtime efficiency is conditioned by both the implementation technique and compilation scheme . The former specifies the data structures that support method invocation, attribute access and subtype testing. The latter consists of the production line of an executable from the source code. Many implementation techniques have been proposed and several compilation schemes can be considered from fully global compilation under the closed-world assumption (CWA) to separate compilation with dynamic loading under the OWA, with midway solutions. This article reviews a significant subset of possible combinations and presents a systematic, empirical comparison of their respective efficiencies with all other things being equal . The testbed consists of the Prm compiler that has been designed for this purpose. The considered techniques include C++ subobjects, coloring, perfect hashing, binary tree dispatch and caching. A variety of processors were considered. Qualitatively, these first results confirm the intuitive or theoretical abstract assessments of the tested approaches. As expected, efficiency increases as CWA strengthens. From a quantitative standpoint, the results are the first to precisely compare the efficiency of techniques that are closely associated with specific languages like C++ and Eiffel. They also confirm that perfect hashing should be considered for implementing Java and .Net interfaces.
| Year | Citations | |
|---|---|---|
Page 1
Page 1