简体   繁体   English

如何使这个循环更快

[英]How to make this loop faster

it takes about an hour to this loop. 这个循环需要大约一个小时。 Is there any way make this faster? 有没有办法让这更快?

l <- 2

while (l < 300001) {
  VV[1,l] = log(b+(l-1) * 0.001-0.0005) + k + 
    beta * (1-delta) * (1-p * sum(Pr[1,(1:l)])) * V[1, l] + 
    beta  *(1-delta) * p * sum((V[1,] * Pr[1,])[(l+1):300001])
  l = l + 1
}

If on *nix (Linux, Unix, macOS, ...) you can use parallel processing: 如果在* nix(Linux,Unix,macOS,...)上,您可以使用parallel处理:

library(parallel)

VV <- matrix(ncol = 300001)
mclapply(2:300001, function(l){
  VV[1,l] <<- log(b+(l-1) * 0.001-0.0005) + k + beta * (1-delta) * (1-p * sum(Pr[1,(1:l)])) * V[1,l]+beta  *(1-delta) * p * sum((V[1,] * Pr[1,])[(l+1):300001])
  }, mc.cores = 5)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM