000188061 001__ 188061
000188061 005__ 20190316235701.0
000188061 0247_ $$2doi$$a10.1145/2489837.2489847
000188061 037__ $$aCONF
000188061 245__ $$aBridging Islands of Specialized Code using Macros and Reified Types
000188061 269__ $$a2013
000188061 260__ $$c2013
000188061 336__ $$aConference Papers
000188061 520__ $$aParametric polymorphism in Scala suffers from the usual drawback of erasure on the Java Virtual Machine: primitive values are boxed, leading to indirect access, wasteful use of heap memory and lack of cache locality. For performance-critical parts of the code, the Scala compiler introduces specialization, a transformation that duplicates and adapts the bodies of classes and methods for primitive types. Specializing code can speed up execution by an order of magnitude, but only if the code is called from monomorphic sites or from other specialized code. Still, if these “islands” of specialized code are called from generic code, their performance becomes similar to that of generic code, losing optimality. To address this, our project builds high performance “bridges” between “islands” of specialized code, removing the requirement that full traces need to be specialized: We use macros to delimit performance-critical “gaps” between specialized code, which we also specialize. We then use reified types to dispatch the correct specialized variant, thus recovering performance across the “islands”. Our transformation obtains speedups up to 30x and around 12x in average compared to generic only code, by enabling specialization to completely remove boxing and reach its full potential
000188061 6531_ $$aData Representation
000188061 6531_ $$aSpecialization
000188061 6531_ $$aScala
000188061 6531_ $$aJava Virtual Machine
000188061 6531_ $$aBytecode
000188061 700__ $$aStucki, Nicolas
000188061 700__ $$g200717$$aUreche, Vlad$$0245399
000188061 7112_ $$d02 07 2013$$cMontpellier, France$$aThe 4th Workshop on Scala
000188061 773__ $$tProceedings of the 4th Workshop on Scala - SCALA '13
000188061 8564_ $$uhttps://infoscience.epfl.ch/record/188061/files/scala-brigding-islands.pdf$$zn/a$$s230160$$yn/a
000188061 909C0 $$xU10409$$0252187$$pLAMP
000188061 909CO $$qGLOBAL_SET$$pconf$$ooai:infoscience.tind.io:188061$$pIC
000188061 917Z8 $$x200717
000188061 917Z8 $$x200717
000188061 937__ $$aEPFL-CONF-188061
000188061 973__ $$rNON-REVIEWED$$sPUBLISHED$$aEPFL
000188061 980__ $$aCONF