ABSTRACT
Dynamic languages have been gaining popularity to the point that their performance is starting to matter. The effort required to develop a production-quality, high-performance runtime is, however, staggering and the expertise required to do so is often out of reach of the community maintaining a particular language. Many domain specific languages remain stuck with naive implementations, as they are easy to write and simple to maintain for domain scientists. In this paper, we try to see how far one can push a naive implementation while remaining portable and not requiring expertise in compilers and runtime systems. We choose the R language, a dynamic language used in statistics, as the target of our experiment and adopt the simplest possible implementation strategy, one based on evaluation of abstract syntax trees. We build our interpreter on top of a Java virtual machine and use only facilities available to all Java programmers. We compare our results to other implementations of R.
- P. S. Abrams. An APL machine. Ph.D. thesis, Stanford University, 1970. Google ScholarDigital Library
- R. A. Becker, J. M. Chambers, and A. R. Wilks. The new S language: a programming environment for data analysis and graphics. Wadsworth and Brooks/Cole Advanced Books & Software, 1988. Google ScholarDigital Library
- C. Chambers and D. Ungar. Making pure object oriented languages practical. In Proceedings of Object-Oriented Programming Systems, Languages and Applications (OOPSLA), 1991. Google ScholarDigital Library
- S. Chirokoff, C. Consel, and R. Marlet. Combining program and data specialization. Higher-Order and Symbolic Computation, 12 (4), 1999. Google ScholarDigital Library
- D. Eddelbuettel and C. Sanderson. RcppArmadillo: accelerating R with high-performance C++ linear algebra. Computational Statistics & Data Analysis, 71, 2014. Google ScholarDigital Library
- B. Fulgham and D. Bagley. The computer language benchmarks game. http://benchmarksgame.alioth.debian.org, 2013.Google Scholar
- A. Gal, B. Eich, M. Shaver, D. Anderson, D. Mandelin, M. R. Haghighat, B. Kaplan, G. Hoare, B. Zbarsky, J. Orendorff, J. Ruderman, E. W. Smith, R. Reitmaier, M. Bebenita, M. Chang, and M. Franz. Trace-based just-in-time type specialization for dynamic languages. In Proceedings of Programming Language Design and Implementation (PLDI), 2009. http://doi.acm.org/10.1145/1542476.1542528. Google ScholarDigital Library
- R. Ihaka and R. Gentleman. R: A language for data analysis and graphics. Journal of Computational and Graphical Statistics, 5 (3), 1996.Google Scholar
- D. McNamee, J. Walpole, C. Pu, C. Cowan, C. Krasic, A. Goel, P. Wagle, C. Consel, G. Muller, and R. Marlet. Specialization tools and techniques for systematic optimization of system software. ACM Transactions on Computer Systems, 19 (2), 2001. Google ScholarDigital Library
- F. Morandat, B. Hill, L. Osvald, and J. Vitek. Evaluating the design of the R language. In Proceedings of European Conference on Object-Oriented Programming (ECOOP), 2012. Google ScholarDigital Library
- L. Osvald. R shootout. http://r.cs.purdue.edu/hg/r-shootout, 2012.Google Scholar
- R Development Core Team. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, 2008. http://www.r-project.org.Google Scholar
- D. Smith. The R ecosystem. In R User Conference (UseR), 2011.Google Scholar
- J. Talbot, Z. DeVito, and P. Hanrahan. Riposte: a trace-driven compiler and parallel VM for vector code in R. In Proceedings of Parallel Architectures and Compilation Techniques (PACT), 2012. Google ScholarDigital Library
- L. Tierney. A Byte Code Compiler for R. University of Iowa, 2012. http://homepage.stat.uiowa.edu/ luke/R/compiler/compiler.pdf.Google Scholar
- S. Urbanek. R benchmark 2.5. http://r.research.att.com/benchmarks, 2008.Google Scholar
- Würthinger, Wimmer, Wöß, Stadler, Duboscq, Humer, Richards, Simon, and Wolczko}Truf13T. Würthinger, C. Wimmer, A. Wöß, L. Stadler, G. Duboscq, C. Humer, G. Richards, D. Simon, and M. Wolczko. One VM to rule them all. In Proceedings of Onward!, the ACM Symposium on New Ideas in Programming and Reflections on Software, 2013. Google ScholarDigital Library
Index Terms
- A fast abstract syntax tree interpreter for R
Recommendations
A fast abstract syntax tree interpreter for R
VEE '14Dynamic languages have been gaining popularity to the point that their performance is starting to matter. The effort required to develop a production-quality, high-performance runtime is, however, staggering and the expertise required to do so is often ...
Optimizing R language execution via aggressive speculation
DLS 2016: Proceedings of the 12th Symposium on Dynamic LanguagesThe R language, from the point of view of language design and implementation, is a unique combination of various programming language concepts. It has functional characteristics like lazy evaluation of arguments, but also allows expressions to have ...
Abstract syntax based programming environments
AdaTEC '82: Proceedings of the AdaTEC Conference on AdaA program development environment based on a high-level semantic representation of programs rather than a textual representation was investigated. Several programming languages are supported through the use of language parameterized tools. These tools ...
Comments