Automating Ad hoc Data Representation Transformations

To maximize run-time performance, programmers often specialize their code by hand, replacing library collections and containers by custom objects in which data is restructured for efficient access. However, changing the data representation is a tedious and error-prone process that makes it hard to test, maintain and evolve the source code. We present an automated and composable mechanism that allows programmers to safely change the data representation in delimited scopes containing anything from expressions to entire class definitions. To achieve this, programmers define a transformation and our mechanism automatically and transparently applies it during compilation, eliminating the need to manually change the source code. Our technique leverages the type system in order to offer correctness guarantees on the transformation and its interaction with object-oriented language features, such as dynamic dispatch, inheritance and generics. We have embedded this technique in a Scala compiler plugin and used it in four very different transformations, ranging from improving the data layout and encoding, to retrofitting specialization and value class status, and all the way to collection deforestation. On our benchmarks, the technique obtained speedups between 1.8x and 24.5x.

Publié dans:
Acm Sigplan Notices, 50, 10, 801-820
Présenté à:
Object Oriented Programming Systems Languages and Applications (OOPSLA)', u"[u'ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Pittsburgh, PA, USA, October 25-30, 2015
New York, Assoc Computing Machinery
Published in OOPSLA '15:

Note: Le statut de ce fichier est: Laboratoires impliqués seulement

 Notice créée le 2015-04-08, modifiée le 2019-06-17

Publisher's version:
Télécharger le documentPDF
Télécharger le documentPNG
Lien externe:
Télécharger le documentURL
Évaluer ce document:

Rate this document:
(Pas encore évalué)