Possible shortcomings for using JIT with R?

compiler-construction, jit, performance, r

Solution

The `rpart` example given above, no longer seems to be an issue:

library("rpart")
fo = function() {
  for(i in 1:500){
    rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
  }
}    system.time(fo())
#   user  system elapsed 
#  1.212   0.000   1.206 
compiler::enableJIT(3)
# [1] 3
system.time(fo())
#   user  system elapsed 
#  1.212   0.000   1.210 

I've also tried a number of other examples, such as

- growing a vector;

- A function that's just a wrapper around `mean`

While I don't always get a speed-up, I've never experience a significant slow-down.

R> sessionInfo()
R version 3.3.0 (2016-05-03)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04 LTS

Problem

I recently discovered that one can use JIT (just in time) compilation with R using the compiler package (I summarizes my findings on this topic in a recent blog post). One of the questions I was asked is: Is there any pitfall? it sounds too good to be true, just put one line of code and that's it. After looking around I could find one possible issue having to do with the "start up" time for the JIT. But is there any other issue to be careful about when using JIT? I guess that there will be some limitation having to do with R's environments architecture, but I can not think of a simple illustration of the problem off the top of my head, any suggestions or red flags will be of great help?

Original source