Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of...

43
Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion Empirical Assessment of Object-Oriented Implementations with Multiple Inheritance and Static Typing Roland Ducournau Flor´ eal Morandat * Jean Privat LIRMM — CNRS — Universit´ e Montpellier 2 Universit´ e du Qu´ ebec ` a Montr´ eal OOPSLA 2009, October 25–29, 2009, Orlando, Florida, USA 1 / 30 Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Transcript of Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of...

Page 1: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Empirical Assessment of Object-Oriented Implementationswith Multiple Inheritance and Static Typing

Roland Ducournau Floreal Morandat ∗ Jean Privat

LIRMM — CNRS — Universite Montpellier 2Universite du Quebec a Montreal

OOPSLA 2009, October 25–29, 2009, Orlando, Florida, USA

1 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 2: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Motivation

Multiple Inheritance

Most statically typed languages use some kind of multiple inheritance

Doubtfull scalability

C++ Table size is cubic in the number of classes

Java, C# Implementation of invokeInterface is not time-constant

Objective

Design alternative implementations

Evaluate their efficiency

2 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 3: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

1 IntroductionContextObjectives

2 Implementation Techniques

3 Compilation Schemes

4 Test Protocol and ResultsMeta-Compiling Test ProtocolResults and Discussion

5 ConclusionProspects

3 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 4: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Context I

Language Features

Multiple inheritance

Static typing

Target Languages: C++, Eiffel, Java, C#, . . .

Language Independent Implementation Techniques

Three basic mechanisms

Attribute access

Method invocation (Late binding)

Subtype testing

4 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 5: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Context II

Compilation Schemes

Production of an executable from source file

Compiler, linker, loader, . . .

From pure Open World Assumption (OWA)To pure Closed World Assumption (CWA)

Separate compilation with dynamic loading

. . .

Global compilation

5 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 6: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Objectives

Assessment of Runtime Efficiency

Comparing execution times depending on:

Implementation techniques

Compilation schemes

Processors

With all other things being equal

Test Protocol

Based on meta-compilation

6 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 7: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

1 IntroductionContextObjectives

2 Implementation Techniques

3 Compilation Schemes

4 Test Protocol and ResultsMeta-Compiling Test ProtocolResults and Discussion

5 ConclusionProspects

7 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 8: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Single Subtyping (SST)

Offset

attr

meth

Offset

Offset

classmethod

method table

table

value

id

class

object

object layout

Invariants

References don’t depend on their static type

Positions independent of receiver’s dynamic type

Compatible with OWA

8 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 9: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

From SST to MI

MI can’t preserve both OWA and SST Invariants

Preserving OWA

C++ subobjects (SO)

References depend on their static types

Overhead: Cubic table size, pointer adjustments, . . .

Preserving SST Invariants

Coloring

Dixon et al. (1989), Pugh and Weddell (1990), Vitek et al (1997)

Requires CWA at link-time

Overhead: Holes in object layout

9 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 10: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Perfect Hashing (PH)Alternative to C++ Subobjects

table

Object

Proposed for:

I invokeInterfaceI Subtype testing

hv = Hash(h, interface Id)

Collision free

10 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 11: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Perfect Hashing (PH)Alternative to C++ Subobjects

table

Object

method tablehashtable

h

Proposed for:

I invokeInterfaceI Subtype testing

hv = Hash(h, interface Id)

Collision free

10 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 12: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Perfect Hashing (PH)Alternative to C++ Subobjects

table

Object

method tablehashtable

h

hv

ioffset

Proposed for:

I invokeInterfaceI Subtype testing

hv = Hash(h, interface Id)

Collision free

10 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 13: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Perfect Hashing (PH)Alternative to C++ Subobjects

table

Object

method tablehashtable

h

hv

ioffset

iOffset

Proposed for:

I invokeInterfaceI Subtype testing

hv = Hash(h, interface Id)

Collision free

10 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 14: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Perfect Hashing (PH)Alternative to C++ Subobjects

table

Object

method tablehashtable

h

hv

ioffset

iOffset

method

offset

method

Proposed for:

I invokeInterfaceI Subtype testing

hv = Hash(h, interface Id)

Collision free

10 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 15: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Perfect Hashing (PH)Alternative to C++ Subobjects

table

Object

method tablehashtable

h

hv

ioffset

iOffset

method

offset

method

Id

interface

Proposed for:

I invokeInterfaceI Subtype testing

hv = Hash(h, interface Id)

Collision free

10 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 16: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Perfect Hashing (PH)

Preserving SST Invariants

Compatible with OWA

Constant time

Linear space

Hashing Functions

Bit-wise and

Modulo

Evaluation

Time/Space trade-off

11 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 17: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Binary Tree Dispatch (BTD)Alternative to Coloring

Principle

Tableless technique generalizing inline caches

Type analysis / Dead code elimination ⇒ CWA

Used by Smart Eiffel

Evaluation

Logarithmic time for unbounded BTD

BTDk ⇒ depth ≤ k (BTD0 = Static Calls)

Complemented by coloring when depth > k

Efficient iff k small

12 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 18: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Caching

Principle

It relies on some underlying implementation

A cache is allocated into the VFT

It memoizes last table access

Used in production VM

Evaluation

Code sequence markedly longer

Efficiency depends on cache-hit rates

Increasing Cache-hit Rate

Cache dedicated to each mechanism (empirical)

Multiple caches with static selection (mathematical)

13 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 19: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

1 IntroductionContextObjectives

2 Implementation Techniques

3 Compilation Schemes

4 Test Protocol and ResultsMeta-Compiling Test ProtocolResults and Discussion

5 ConclusionProspects

14 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 20: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Compilation Schemes

Open World Assumption

Modularity

Closed World Assumption

Efficiency

Separate Compilation + Dynamic Loading

Global compilation

Separate Compilation + Global Link

Separate Compilation + Global Optimisations

D

G

S

O

15 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 21: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Separate Compilation with Global Linking (S)

A

source

module

code A

Local phase external

model A

separatecompilation

Modular checks

Source code privacy

Single subtyping efficiency

16 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 22: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Separate Compilation with Global Linking (S)

separatecompilationmodule

source

externalLocal phase

Bcode B

model B

A

source

module

code A

Local phase external

model A

separatecompilation

Modular checks

Source code privacy

Single subtyping efficiency

16 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 23: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Separate Compilation with Global Linking (S)

Global phase

Coloring

Link

separatecompilationmodule

source

externalLocal phase

Bcode B

model B

A

source

module

code A

Local phase external

model A

separatecompilation

Modular checks

Source code privacy

Single subtyping efficiency

16 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 24: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Separate Compilation with Global Optimization (O)

separatecompilationmodule

source

externalLocal phase

Bcode B

model B

A

source

module

code A

Local phase external

model A

separatecompilation

Thunks formethod invocation

Monomorphic calls are static

More optimizations available

17 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 25: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Separate Compilation with Global Optimization (O)

Global phase

Coloring

CHA−BTD

generation

Thunk

Link

separatecompilationmodule

source

externalLocal phase

Bcode B

model B

A

source

module

code A

Local phase external

model A

separatecompilation

Thunks formethod invocation

Monomorphic calls are static

More optimizations available

17 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 26: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Implementation-Schemes Compatibility

Dynamic Separate Optimized Global

Perfect Hashing • ∗ ∗ ∗

Subobjects � � ∗ ∗

Coloring × • • •

BTD × × • •

•: Tested �: Not yet tested×: Incompatible ∗: Non-Interesting

18 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 27: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

1 IntroductionContextObjectives

2 Implementation Techniques

3 Compilation Schemes

4 Test Protocol and ResultsMeta-Compiling Test ProtocolResults and Discussion

5 ConclusionProspects

19 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 28: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Test Language

Prm the Language

Full multiple inheritance (methods & attributes)

Genericity

Primitive types subtype of Object

Prmc the Compiler

A Prm program

Modular

Generate C code

20 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 29: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Meta-Compiling Test Protocol

executable

Test

executable

Test

executable

TestCompiler

Test

program

All boxes are compilers

Time measurement of the red path

21 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 30: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Meta-Compiling Test Protocol

result

Test

data

Test

executable

Test

executable

Test

executable

TestCompiler

Test

program

All boxes are compilers

Time measurement of the red path

21 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 31: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Meta-Compiling Test Protocol

Runtime Reproducibility

Deterministic code generation

I Hashmap with predictable iteration orderI Produces diff-equivalent binaries

Bootstrap = actual fix point

Measurements

Time spent by the Prm to C process

Best time among severals tens of runs

I Minimises OS noise

22 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 32: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Some Statistics

Number of Dynamic invocationsMethods calls 1720 MBTD 0 62 %

≤ 3 22 %≥ 4 16 %

Cache-hit 1 68 %2 71 %4 79 %

Consistent with statistics reported in the literature

23 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 33: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Runtime EfficiencyIntel Core2 E8500

%

−10

010

2030

Unbounded BTDBTD 2 + ColoringColoringPH−andPH−mod

GlobalSeparate withglobal optim.

Separate Dynamic Loading

24 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 34: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Evaluation

Compilation schemes

Global scheme is far better than separate

Optimized scheme slightly better than separate

Dynamic loading is very expensiveespecially in full Multiple Inheritance

Implementation techniques

BTD+Coloring optimal

PH-and efficient for Java interfaces (by extrapolation)

Caching inefficient even with PH-mod

25 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 35: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

1 IntroductionContextObjectives

2 Implementation Techniques

3 Compilation Schemes

4 Test Protocol and ResultsMeta-Compiling Test ProtocolResults and Discussion

5 ConclusionProspects

26 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 36: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Conclusion

First systematic comparisons

Language independent

between

Implementation techniques

Compilation schemes

Processors

ceteris paribus (with all other things being equal)

Mainly confirm previous theorical results

Significant variation according to processors (about ten tested)but similar behaviours

27 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 37: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Conclusion

Prm the testbed

Modular compiler open to new implementations and schemes

Repeatable and reproducible tests

Single program tested, but intensive OO mechanism usage

Prm the languages

Prm : Dedicated to testhttp://www.lirmm.fr/prm/

Nit : User friendly language (recommended)http://www.nitlanguage.org/

28 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 38: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Prospects

Testbed extension

Other implementations (C++ subobjects, . . . )

Other processors and architectures

Other metrics (cpu cache misses, memory usage, . . . )

Heterogeneous vs homogeneous genericity

Other optimisations (garbage collector, . . . )

Virtual Machine application

Perfect Hashing on Production VM

Application of link-time global optimization to adaptive compilers (JIT)

Full multiple inheritance VM (as efficient as Java/.NET)

29 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 39: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Thanks ...

30 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 40: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Executable SizeIntel Core2 E8500

%

−20

020

4060

80

Unbounded BTDBTD 2 + ColoringColoringPH−andPH−mod

GlobalSeparate withglobal optim.

Separate Dynamic Loading

30 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 41: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

delta1 method delta2

Offset

attr

Offset

cast

method table

table

value

meth

Offset

delta1

table1

delta2

object2

table2

object object1

Reference depend on it’s static types

Cubic table size in the number of classes

Pointer adjustments

30 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 42: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Separate Compilation and Dynamic Loading (D)

code B

modelexternal

sourcemodule

B

code A

B

Asourcemodule

A

modelexternal

Symbol

substitution

Separatecompilation

Local phase

Local phase

Runtime system (VM, ...)

Separatecompilation

Pure OWA

Modular checks

Source code privacy

Fast recompilation

No optimization available without recompilations

30 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing

Page 43: Empirical Assessment of Object-Oriented Implementations ... · PDF fileEmpirical Assessment of Object-Oriented Implementations ... Oriented Implementations, with Multiple Inheritance

Introduction Implementation Techniques Compilation Schemes Test Protocol and Results Conclusion

Global Compilation (G)

A

source

module

sourcemodule

B Codegeneration

Link

analysisType

codeLiving

BTD/Coloring

Lots of optimizations available

More compact code

No modular checks

Heavy recompilation

30 / 30

Empirical Assessment of Object-Oriented Implementations, with Multiple Inheritance and Static Typing