我编写了一个 Rcpp 函数,该函数从总体中返回一个样本,并且为了测试我想运行它数千或数百万次的估计方法。似乎调用 Rcpp 需要一点开销,而且类似的事情replicate(100,myFunction())
比我预期的要长得多。
最好的方法是什么?rep
, *apply
, replicate
, 将循环本身放在 C++ 中?
我编写了一个 Rcpp 函数,该函数从总体中返回一个样本,并且为了测试我想运行它数千或数百万次的估计方法。似乎调用 Rcpp 需要一点开销,而且类似的事情replicate(100,myFunction())
比我预期的要长得多。
最好的方法是什么?rep
, *apply
, replicate
, 将循环本身放在 C++ 中?
如果您关心性能,您希望尽量减少从 R 到 C++ 的调用次数——而不是像您所说 的那样做数千或数百万次。
所以巴蒂斯特是正确的:for()
如果可以的话,在 C++ 级别执行循环。
另请注意,最新版本的RcppArmadillo现在有一个 C++ 版本,sample()
它可能也允许您在 C++ 中完成该部分。也就是说,我对“UPtille”以及它的作用一无所知,所以也许你被现有的 R 实现所困扰。