rperformancejit

Possible shortcomings for using JIT with R?


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?


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

    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