为什么这3个循环快于1个短循环

时间:2019-01-28 20:26:55

标签: r for-loop lapply microbenchmark

在尝试优化和对函数进行基准测试时,我能够将3个for循环缩减为1个简短的subprocess.check_output调用,但是函数变慢了。

我试图理解为什么会发生这种情况,就像在3个循环中一样,我预先分配了3个具有相同长度的列表,并将它们填充到3个不同的循环中,这似乎没有必要且效率低下。

lapply

1 个答案:

答案 0 :(得分:0)

您确定这些时差是如此重要吗?

library(microbenchmark)
# mut2 = sapply(1:400, function(i) sample(c(0,1), size = nrow(Grid), replace = T))
mc = microbenchmark(
  loop = getRects(mut2, Grid),
  lap1 = getRects1(mut2, Grid),
  lap2 = getRects2(mut2, Grid),
  lap3 = getRects3(mut2, Grid)
)
mc
#> Unit: milliseconds
#>  expr      min       lq     mean   median       uq       max neval
#>  loop 2.651485 2.699166 3.195301 2.756171 3.136741  8.010173   100
#>  lap1 2.755571 2.828128 3.098850 2.877806 3.012487  7.427598   100
#>  lap2 2.737105 2.808924 3.118260 2.863221 2.939996 13.706736   100
#>  lap3 2.719101 2.787040 3.191893 2.852963 3.004811  8.490867   100
相关问题