【发布时间】:2014-12-08 11:45:12
【问题描述】:
我想知道a!=0 比!a==0 快多少,并使用了 R 包微基准。
这是代码(如果你的电脑很慢,减少 3e6 和 100):
library("microbenchmark")
a <- sample(0:1, size=3e6, replace=TRUE)
speed <- microbenchmark(a != 0, ! a == 0, times=100)
boxplot(speed, notch=TRUE, unit="ms", log=F)
每次,我都会得到一个类似下面的情节。 正如预期的那样,第一个版本(中位数 26 毫秒)比第二个版本(33 毫秒)更快。
但是这几个非常高的值(异常值)是从哪里来的呢?那是一些内存管理效果吗?如果我将时间设置为 10,则没有异常值...
编辑:sessionInfo():R 版本 3.1.2 (2014-10-31) 平台:x86_64-w64-mingw32/x64(64 位)
【问题讨论】:
-
我不认为这很容易追踪;即使使用
times=10左右,我也看到了类似的结果。请记住microbenchmark不是防弹的。有几个博客指出了它如何收集时间信息的半错误。也可能只是在R操作的正常过程中不时发生一些其他“事情”——gc调用,或等待系统级别的 RAM 重新分配等。也许尝试运行一个循环system.time看看结果分布情况如何?
标签: r microbenchmark