[英]Optimization R code - Rcpp
除了基准测试功能外,R中还有任何工具可让我们获取R代码中的最大瓶颈吗?
当我用C ++重写R代码时,我通常对获得的计算增益一无所知。 例如,在每次迭代都需要进行优化的引导程序中,我不知道使用GSL库对对数似然函数进行优化是否有用,因为optim
语言函数R使用stats.so文件。 我注意到这是在执行stats ::: C_optim
。
> stats:::C_optim
$name
[1] "optim"
$address
<pointer: 0x1cb34e0>
attr(,"class")
[1] "RegisteredNativeSymbol"
$dll
DLL name: stats
Filename: /usr/lib/R/library/stats/libs/stats.so
Dynamic lookup: FALSE
$numParameters
[1] 7
attr(,"class")
[1] "ExternalRoutine" "NativeSymbolInfo"
查看optim
函数( edit(optim)
)的正文,我发现导入了用C实现的高效函数。例如,有:
.External2(C_optim, par, fn1, gr1, method, con, lower,
upper)
疑问 :对于Rcpp用户,您通常在项目中尝试实现所有C ++函数或实现一组用于R函数的小型C ++函数吗?
我知道这是一个非常普遍的问题,但是我使用Rcpp的所有功能始终尝试从头开始实现C ++功能。 我觉得我用C ++编程比使用R语言更多。有时我认为我需要直接用C ++编程。
R具有许多特性,使该语言在执行各种任务时变慢。 我总是尽量避免循环,而让其使用apply
系列函数。 但是,我经常发现R非常慢。 这样,由于我不确定什么值得优化,所以最终我用C ++实现了所有东西。
如果您(通常)使用R编写代码更快,并且想编写许多C ++代码,则建议采用以下方法:
凭着经验,您也许可以偷偷摸摸,例如,从一开始就知道问题中的某些事情将需要编译后的代码。 但这确实取决于您正在处理的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.