以下执行时间的差异是真的吗?
library(microbenchmark)
microbenchmark(x = NULL, x <- NULL, times = 100e3)
Unit: nanoseconds
expr min lq mean median uq max neval
x 0 0 0.60819 0 0 8426 1e+05
x <- NULL 0 0 1.75101 0 1 8727 1e+05
我得到一个警告,大约75%的评估都有非正执行时间。尽管如此,每次运行此操作时,我都会得到一致的结果:x = NULL
平均比x <- NULL
快。
答案 0 :(得分:4)
microbenchmark
函数以不同的方式解析...
个参数。 x=NULL
永远不会被解释为一个分配,而是一个函数参数。
所以,就我所知,你并没有真正衡量第一个论点的时间。
你需要做这样的事情:
microbenchmark(test1 = `=`(x, NULL), test2 = `<-`(x, NULL), times = 100e3)
或@Roland在评论中描述。 这会调用赋值运算符后面的相应函数。
答案 1 :(得分:3)
这些陈述在这种情况下不会做同样的事情。如果你运行的话,你会看到这个
x
这创建了一个对象y
,但没有对象microbenchmark({y = NULL}, {x <- NULL}, times = 100e3)
。您可以运行使用括号运行的测试:
colA