如何使用函数中的列表参数microbenchmark。我想用不同的输入对相同的功能进行微基准测试
microbenchmark(j1 = {sample(1e5)},
j2 = {sample(2e5)},
j3 = {sample(3e5)})
Run Code Online (Sandbox Code Playgroud)
以下内容将不再适用,因为列表将仅包含向量而不是未求值的表达式。
microbenchmark(list = list(j1 = {sample(1e5)},
j2 = {sample(2e5)},
j3 = {sample(3e5)))
Run Code Online (Sandbox Code Playgroud)
我也想使用eg生成列表lapply。
我们需要使用substituteorbquote函数来获取列表中未计算的表达式,例如
microbenchmark(list = list(j1 = bquote({sample(1e5)}),
j2 = bquote({sample(2e5)}),
j3 = bquote({sample(3e5)})))
Run Code Online (Sandbox Code Playgroud)
可以使用 lapply 生成作业,但我们必须小心环境
jobs = lapply(1000*1:3, function(s) local({s = s; bquote(sample(.(s)))}) )
Run Code Online (Sandbox Code Playgroud)
只需使用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
Run Code Online (Sandbox Code Playgroud)
alist像处理函数参数一样处理其参数。因此,不会评估值,并且允许使用没有值的带标签的参数,而list只会忽略它们。
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |