如何在microbenchmark函数中使用列表参数。我想用不同的输入对相同的函数进行微基准测试,如
microbenchmark(j1 = {sample(1e5)},
j2 = {sample(2e5)},
j3 = {sample(3e5)})下面是不会飞的,因为列表只包含向量,而不是未计算的表达式。
microbenchmark(list = list(j1 = {sample(1e5)},
j2 = {sample(2e5)},
j3 = {sample(3e5)))我还希望使用例如lapply生成列表。
发布于 2018-01-07 12:25:14
只需使用alist
microbenchmark(list = alist(a = Sys.sleep(0.005), b = Sys.sleep(0.01)))
#> Unit: milliseconds
#> expr min lq mean median uq max neval cld
#> a 5.02905 5.15946 5.447538 5.446029 5.612429 6.030764 100 a
#> b 10.04997 10.18264 10.431011 10.459569 10.547814 11.058911 100 b
alist处理它的参数就像它们描述函数参数一样。因此,不对值进行计算,不允许带标记的参数,而list则忽略它们。
发布于 2015-10-05 14:20:00
我们需要使用substitute或bquote函数来获取列表中未计算的表达式。
microbenchmark(list = list(j1 = bquote({sample(1e5)}),
j2 = bquote({sample(2e5)}),
j3 = bquote({sample(3e5)})))作业可以使用lapply生成,但我们必须小心使用环境。
jobs = lapply(1000*1:3, function(s) local({s = s; bquote(sample(.(s)))}) )https://stackoverflow.com/questions/32950881
复制相似问题