gpt4 book ai didi

r - 计算时间!=

转载 作者:行者123 更新时间:2023-12-03 23:29:04 25 4
gpt4 key购买 nike

我想知道有多快 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 位)

computation time unequal and not_equal

最佳答案

你说你在 times=10 时没有异常值,但运行 microbenchmarktimes=10多次,您可能会看到奇怪的异常值。这是一次运行的比较 times=100十次运行 times=10 ,这表明在两种情况下都会出现异常值。

根据表达式中涉及的对象的大小,我想当您的机器在内存限制中挣扎时可能会出现异常值,但它们也可能由于 CPU 压力而发生,例如由于非 R 过程。

a <- sample(0:1, size=3e6, replace=TRUE)
speed1 <- microbenchmark(a != 0, ! a == 0, times=100)
speed1 <- as.data.frame(speed1)

speed2 <- replicate(10, microbenchmark(a != 0, ! a == 0, times=10), simplify=FALSE)
speed2 <- do.call(rbind, lapply(speed2, cbind))

times <- cbind(rbind(speed1, speed2), method=rep(1:2, each=200))
boxplot(time ~ expr + method, data=times,
names=c('!=; 1x100', '!==; 1x100', '!=; 10x10', '!==; 10x10'))

enter image description here

关于r - 计算时间!=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com