我总是被我看到基准标记和system.time
和rbenchmark
(因为时间的精度可能缺乏)缺乏准确性而有点困扰,并且microbenchmark
最近看到哈德利参考了这个包。所以我决定试一试,如下所示。我mean
反对f <- function(x) {sum(x)/length(x)}
并期望mean
做得更好,f
但据我了解,结果并不表明这是真的。
- 我误解了结果吗?
- f 实际上比平均值快吗?
- 微基准测试是否仍处于测试阶段,是否需要解决?
我在 win 7 机器上运行 R2.15(因为 microbenchmark 的计时取决于您的操作系统)。
结果
Unit: microseconds
expr min lq median uq max
1 f(x) 19.130 20.529 20.529 20.996 286.00
2 mean(x) 28.927 29.860 30.327 30.327 672.31
编码
library(microbenchmark)
x <- 1:10000
f <- function(x) {sum(x)/length(x)}
mean(x)
res <- microbenchmark(
mean(x),
f(x),
times=1000L)
print(res)
boxplot(res)