我使用foreach从R中的复杂函数中进行采样。由于这是一个独立的采样,因此可以进行高度参数化。但是,只要我增加采样大小,我的例程就不可能在普通计算机的下降时间内完成。
所以,我想请求建议加快这个过程。一个最小的例子就是这个
devtools::install_github("franciscorichter/dmea02")
library(dmea02)
test <- function(n){
no_cores <- detectCores()- 1
cl <- makeCluster(no_cores)
registerDoParallel(cl)
tree = sim.tree(seed=1)$tree.extant
trees <- foreach(i = 1:n, combine = list) %dopar% dmea02::rec.tree(tree=tree, pars=c(0.8,0.1,40))
stopCluster(cl)
}
system.time(test(10))
system.time(test(100))
system.time(test(1000))
正如我所说,只要我将采样大小增加到更高的订单,就会开始花费太多时间。
我知道在C ++上编写循环并使用Rcpp最终会有所帮助,但我不是计算机科学家而且我不知道如何用C ++编写代码所以我需要一些时间来学习它,而我不是完全确定它是否会真正改善很多。
任何想法都表示赞赏。