我想就什么是加速代码的最佳方法发表意见,该方法R使用 C++ 用户定义函数(func1、func2、func3、func4),来源于RusingRcpp包。我正在展示一个无法重现的示例,只是因为我使用的真正功能太长而无法在此处使用。通过使用以下代码,大约需要 10 分钟才能获得结果。
在这段代码中,我有一个函数 ( integrand_func),它将使用R 包中的cubintegrate函数进行 4D 数值积分。cubature
integrand_func<-function(x_list, x0){
a = x_list[1]
b = x_list[2]
c = x_list[3]
d = x_list[4]
pA = func1(a, x0)
pB = func2(b)
pC = func3(c)
pD = func4(d)
return(Constant * pA * pB * pC *pD)
}
然后我执行integrand_func使用cubintegrate函数的 4D 数值积分。然后在 for 循环中针对 的各种值重复此数值积分x。
res<-rep(NA,length(x))
for(i in 1:length(x)){
res[i] = cubintegrate(integrand_func,lower=rep(-400,4), upper = rep(400,4),x0=x[i], method='cuhre')$integral
}
例如,我的一个想法是使用foreachR 包并行化 for 循环。