Efficient Implementations of Software Architectures via Partial Evaluation

  • Authors:
  • Renaud Marlet;Scott Thibault;Charles Consel

  • Affiliations:
  • IRISA/INRIA-Université de Rennes 1, Campus universitaire de Beaulieu, 35042 Rennes cedex, France. marlet@irisa.fr;IRISA/INRIA-Université de Rennes 1, Campus universitaire de Beaulieu, 35042 Rennes cedex, France. thibault@gmvhdl.com;IRISA/INRIA-Université de Rennes 1, Campus universitaire de Beaulieu, 35042 Rennes cedex, France. consel@irisa.fr

  • Venue:
  • Automated Software Engineering
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

Abstract

The notion of flexibility (that is, the ability to adapt tochanging requirements or execution contexts) is recognized as a keyconcern in structuring software, and many architectures have beendesigned to that effect. However, the corresponding implementationsoften come with performance and code size overheads. The source ofinefficiency can be identified to be in the loose integration ofcomponents, because flexibility is often present not only at thedesign level but also in the implementation. To solve this flexibility vs. efficiency dilemma, we advocate theuse of partial evaluation, which is an automated technique to produceefficient, specialized instances of generic programs. As supportingcase studies, we consider several flexible mechanisms commonly foundin software architectures: selective broadcast, pattern matching,interpreters, software layers, and generic libraries. Using Tempo,our specializer for C, we show how partial evaluation can safelyoptimize implementations of those mechanisms. Because thisoptimization is automatic, it preserves the original genericity andextensibility of the implementation.