有人可以解释一下R中的“编译”是什么,以及为什么它会加速这段代码?

时间:2017-01-06 09:34:16

标签: r performance

我正在研究前一个学生写的一些R代码。该代码的计算密集程度非常高,因此他似乎已经竭尽全力尽量减少所需的时间。

以下部分是一个例子:

# Now lets compile these functions, for a modest speed boost.
Sa <- cmpfun(Sa)
Sm <- cmpfun(Sm)
sa <- cmpfun(sa)
sm <- cmpfun(sm)
h <- cmpfun(h)
li <- cmpfun(lli)
ll <- cmpfun(ll)

他似乎使用了编译器包来执行此操作。

我从未听说过在R中进行编译,我对它的作用以及为什么它有助于加快代码感兴趣。我找不到像我这样的新手解释它的材料。

1 个答案:

答案 0 :(得分:3)

自2.130版以来,编译器包已成为R的一部分。编译R函数会导致字节代码版本运行得更快。有许多方法可以编译。默认情况下会编译所有基本R函数。

通过cmpfun编译各个功能。或者,您可以调用enableJIT(3)一次,并自动编译R代码。

我发现编译R代码可以提供适度的,无成本的速度提升 - 有关定时示例,请参阅Efficient R programming

在R 3.4.X

中,默认情况下会打开字节编译