[英]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.