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)
任何解释?
上面给出的例子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)