@inproceedings{1531c61c661e4c79bd09732638655245,
title = "Optimizing R VM: Allocation removal and path length reduction via interpreter-level specialization",
abstract = "The performance of R, a popular data analysis language, was never properly understood. Some claimed their R codes ran as efficiently as any native code, others quoted orders of magnitude slowdown of R codes with respect to equivalent C implementations.We found both claims to be true depending on how an R code is written. This paper introduces a first classification of R programming styles into Type I (looping over data), Type II (vector programming), and Type III (glue codes). The most serious overhead of R are mostly manifested on Type I R codes, whereas many Type III R codes can be quite fast. This paper focuses on improving the performance of Type I R codes. We propose the ORBIT VM, an extension of the GNU R VM, to perform aggressive removal of allocated objects and reduction of instruction path lengths in the GNU R VM via profile-driven specialization techniques. The ORBIT VM is fully compatible with the R language and is purely based on interpreted execution. It is a specialization JIT and runtime focusing on data representation specialization and operation specialization. For our benchmarks of Type I R codes, ORBIT is able to achieve an average of 3.5X speedups over the current release of GNU R VM and outperforms most other R optimization projects that are currently available.",
keywords = "Dynamic scripting language, R, Specialization",
author = "Haichuan Wang and Peng Wu and David Padua",
year = "2014",
doi = "10.1145/2544137.2544153",
language = "English (US)",
isbn = "9781450326704",
series = "Proceedings of the 12th ACM/IEEE International Symposium on Code Generation and Optimization, CGO 2014",
publisher = "Association for Computing Machinery",
pages = "295--305",
booktitle = "Proceedings of the 12th ACM/IEEE International Symposium on Code Generation and Optimization, CGO 2014",
address = "United States",
note = "12th ACM/IEEE International Symposium on Code Generation and Optimization, CGO 2014 ; Conference date: 15-02-2014 Through 19-02-2014",
}