000207050 001__ 207050
000207050 005__ 20190124135425.0
000207050 0247_ $$2doi$$a10.1145/2814270.2814271
000207050 022__ $$a0362-1340
000207050 02470 $$2ISI$$a000367256500046
000207050 037__ $$aCONF
000207050 245__ $$aAutomating Ad hoc Data Representation Transformations
000207050 260__ $$bAssoc Computing Machinery$$c2015$$aNew York
000207050 269__ $$a2015
000207050 300__ $$a20
000207050 336__ $$aConference Papers
000207050 500__ $$aPublished in OOPSLA '15: http://2015.splashcon.org/event/oopsla2015-automating-ad-hoc-data-representation-transformations
000207050 520__ $$aTo 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.
000207050 6531_ $$adata representation
000207050 6531_ $$ajvm
000207050 6531_ $$abytecode
000207050 6531_ $$acompatibility
000207050 6531_ $$atransformation
000207050 6531_ $$aoptimization
000207050 6531_ $$asafety
000207050 6531_ $$asemantics
000207050 700__ $$0245399$$g200717$$uEcole Polytech Fed Lausanne, CH-1015 Lausanne, Switzerland$$aUreche, Vlad
000207050 700__ $$aBiboudis, Aggelos
000207050 700__ $$aSmaragdakis, Yannis
000207050 700__ $$uEcole Polytech Fed Lausanne, CH-1015 Lausanne, Switzerland$$aOdersky, Martin$$g126003$$0241835
000207050 7112_ $$dOctober 25-30, 2015$$cPittsburgh, PA, USA$$aObject Oriented Programming Systems Languages and Applications (OOPSLA)', u"[u'ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)
000207050 773__ $$j50$$tAcm Sigplan Notices$$k10$$q801-820
000207050 8564_ $$uhttps://github.com/miniboxing/ildl-plugin$$zURL
000207050 8564_ $$uhttps://infoscience.epfl.ch/record/207050/files/ildl.pdf$$zPublisher's version$$s333513$$yPublisher's version
000207050 8564_ $$uhttps://infoscience.epfl.ch/record/207050/files/ildl-frog2.png$$zn/a$$s217961$$yn/a
000207050 909C0 $$xU10409$$0252187$$pLAMP
000207050 909CO $$ooai:infoscience.tind.io:207050$$pconf$$pIC$$pGLOBAL_SET
000207050 917Z8 $$x200717
000207050 917Z8 $$x200717
000207050 917Z8 $$x200717
000207050 917Z8 $$x200717
000207050 917Z8 $$x200717
000207050 917Z8 $$x200717
000207050 917Z8 $$x251649
000207050 937__ $$aEPFL-CONF-207050
000207050 973__ $$rREVIEWED$$sPUBLISHED$$aEPFL
000207050 980__ $$aCONF