Optimizing Object-Oriented Languages through Architectural Transformations

  • Tom Tourwé
  • Wolfgang De Meuter
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1575)


Certain features of the object-oriented paradigm are a serious impediment for the runtime performance of object-oriented programs. Although compiler techniques to alleviate this problem were developed over the years, we will present some real-world examples which show that these solutions fall short in making any significant optimizations to systems that are required to be very flexible and highly reusable. As a solution, we propose a radically different approach: using an open compiler to ”compile away” whole designs by performing architectural transformations based on programmer annotations. We will discuss this approach in detail and show why it is more suited to solve the efficiency problems inherently associated with object-oriented programming.


Design Pattern Class Hierarchy Logic Language Abstract Syntax Tree Compound Term 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Beck, K.: Smalltalk Best Practice Patterns. Prentice Hall, Englewood Cliffs (1997)Google Scholar
  2. 2.
    Chambers, C.: The Design and Implementation of the SELF Compiler, an Optimizing Compiler for Object-Oriented Programming Languages. PhD thesis, Stanford University (1992)Google Scholar
  3. 3.
    Coplien, J.O.: Advanced C++ programming styles and idioms. Addison- Wesley Publishing Company, Reading (1992)Google Scholar
  4. 4.
    De Volder, K.: Type-Oriented Logic Meta Programming. PhD thesis, Vrije Universiteit Brussel (1998)Google Scholar
  5. 5.
    Dean, J.A.: Whole Program Optimization of Object-Oriented Languages. PhD thesis, University of Washington (1996)Google Scholar
  6. 6.
    Driesen, K., Holzle, U.: The direct cost of virtual function calls in c++. In: Proceedings of the OOPSLA 1996 Conference, pp. 306–323. ACM Press, New York (1996)Google Scholar
  7. 7.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns, Elements of Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series, Reading (1995)Google Scholar
  8. 8.
    Griswold, W.G.: Program Restructuring as an Aid to Software Maintenance. PhD thesis, University of Washington (1991)Google Scholar
  9. 9.
    Lucas, C.: Documenting Reuse and Evolution with Reuse Contracts. PhD thesis, Vrije Universiteit Brussel (1997)Google Scholar
  10. 10.
    Wuyts, R.: Declarative reasoning about the structure of object-oriented systems. In Technology of object-oriented languages and systems (1998)Google Scholar
  11. 11.
    Zima, H., Chapman, B.: Supercompilers for Parallel and Vector Computers. Addison Wesley, Reading (1990)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Tom Tourwé
    • 1
  • Wolfgang De Meuter
    • 1
  1. 1.Programming Technology LabVrije UniversiteitBrusselBelgium

Personalised recommendations