Enhancing R with Advanced Compilation Tools and Methods

  title={Enhancing R with Advanced Compilation Tools and Methods},
  author={Duncan Temple Lang},
  • D. Lang
  • Published 9 September 2014
  • Computer Science
  • ArXiv
I describe an approach to compiling common idioms in R code directly to native machine code and illustrate it with several examples. Not only can this yield significant performance gains, but it allows us to use new approaches to computing in R. Importantly, the compilation requires no changes to R itself, but is done entirely via R packages. This allows others to experiment with different compilation strategies and even to define new domain-specific languages within R. We use the Low-Level… 

Tables from this paper

ROSA: R Optimizations with Static Analysis
ROSA is presented, a static analysis framework to improve the performance and space efficiency of R programs and shows substantial reductions by ROSA in execution time and memory consumption over both CRAN R and Microsoft R Open.
Object-Oriented Programming, Functional Programming and R
This paper will first review the basic ideas behind object-oriented and functional programming, and then examine the evolution of R with these ideas providing context, to clarify how this particular mix of ideas has turned out in the current R language and supporting software.
A Principled Experimental Design Approach to Big Data Analysis
The principled experimental design approach is shown to provide a near equivalent framework for analysis that delivers near equivalent answers compared with analyses of the full dataset under a controlled error rate.
Programming and R


LLVM: a compilation framework for lifelong program analysis & transformation
The design of the LLVM representation and compiler framework is evaluated in three ways: the size and effectiveness of the representation, including the type information it provides; compiler performance for several interprocedural problems; and illustrative examples of the benefits LLVM provides for several challenging compiler problems.
Emscripten: an LLVM-to-JavaScript compiler
This work presents and proves the validity of Emscripten's Relooper algorithm, which recreates high-level loop structures from low-level branching data, and opens up two avenues for running code written in languages other than JavaScript on the web.
Rcpp: Seamless R and C++ Integration
The Rcpp package simplifies integrating C++ code with R by providing a consistent C++ class hierarchy that maps various types of R objects to dedicated C++ classes.
The gputools package enables GPU computing in R
Several functions commonly used in microarray gene expression analysis for GPU-equipped computers are implemented using R and the CUDA toolkit from Nvidia to take advantage of the better performance provided by an Nvidia GPU.
Compiling R: A Preliminary Report
This paper outlines an initial implementation of a byte code compiler for R and discusses semantic issues raised by the compilation process and sketches of the current virtual machine implementation and compiler design are given.
R: A language and environment for statistical computing.
Copyright (©) 1999–2012 R Foundation for Statistical Computing. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice
Back to the Future: Lisp as a Base for a Statistical Computing System
This work identifies some of the limitations of the computational model of the R language that reduces its effectiveness for dealing with large data efficiently in the modern era.
Learning with kernels
This book is intended to be a guide to the art of self-consistency and should not be used as a substitute for a comprehensive guide to self-confidence.
RCIndex: R interface
  • 2010