将RIT与R一起使用可能存在的缺点?

Tal*_*ili 36 compiler-construction performance jit r

我最近发现可以使用编译器包使用JIT(及时)使用R编译(我在最近的博客文章中总结了我对此主题的发现).

我被问到的一个问题是:

有任何陷阱吗?这听起来好得令人难以置信,只需输入一行代码即可.

环顾四周后,我发现一个可能的问题与JIT的"启动"时间有关.但是在使用JIT时还有其他问题需要注意吗?

我想与R的环境架构有一些限制,但我想不出一个简单的问题,我的头脑问题,任何建议或危险信号将有很大的帮助?

小智 11

使用rpart进行简单测试的输出可能是在所有情况下都不使用enableJIT的建议:

library(rpart)
fo <- function() for(i in 1:500){rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)}
system.time(fo())
#User      System verstrichen 
#2.11        0.00        2.11 

require(compiler)
enableJIT(3)
system.time(fo())
#User      System verstrichen 
#35.46        0.00       35.60
Run Code Online (Sandbox Code Playgroud)

任何解释?

  • 编译需要半分钟:我看到相同(2.8 s - 42.6 s),但是再次执行system.time(fo())只需要2.6 s. (7认同)

csg*_*pie 4

上面给出的例子rpart似乎不再是一个问题:

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 
Run Code Online (Sandbox Code Playgroud)

我还尝试了许多其他示例,例如

  • 生长一个载体;
  • 只是一个包装器的函数mean

虽然我并不总是会加速,但我从未经历过明显的减速。


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