小编Mif*_*iff的帖子

测试 R 中命令的快/慢程度

我试图弄清楚以下每个操作计算从 1 到 100 的累积和的速度有多快/慢。

install.package('microbenchmark')
library(microbenchmark)

#Method 1
cs_for = function(x) {
  for (i in x) {
    if (i == 1) {
      xc = x[i]
    } else {
      xc = c(xc, sum(x[1:i]))
    }
  }
  xc
}

cs_for(1:100)

# Method 2: with apply (3 lines)
cs_apply = function(x) {
  sapply(x, function(x) sum(1:x))
}

cs_apply(100)

# Method 3: 
cumsum (1:100)

microbenchmark(cs_for(1:100), cs_apply(100), cumsum(1:100))
Run Code Online (Sandbox Code Playgroud)

我得到的输出如下:

Unit: nanoseconds
          expr   min     lq      mean   median     uq    max neval cld
 cs_for(1:100) 97702 100551 106129.05 102500.5 105151 …
Run Code Online (Sandbox Code Playgroud)

r processing-efficiency percentage microbenchmark

1
推荐指数
1
解决办法
114
查看次数