首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在微基准测试中使用列表参数

如何在微基准测试中使用列表参数
EN

Stack Overflow用户
提问于 2015-10-05 14:20:00
回答 2查看 629关注 0票数 5

如何在microbenchmark函数中使用列表参数。我想用不同的输入对相同的函数进行微基准测试,如

代码语言:javascript
复制
microbenchmark(j1 = {sample(1e5)},
               j2 = {sample(2e5)},
               j3 = {sample(3e5)})

下面是不会飞的,因为列表只包含向量,而不是未计算的表达式。

代码语言:javascript
复制
microbenchmark(list = list(j1 = {sample(1e5)},
                          j2 = {sample(2e5)},
                          j3 = {sample(3e5)))

我还希望使用例如lapply生成列表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-07 12:25:14

只需使用alist

代码语言:javascript
复制
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则忽略它们。

票数 10
EN

Stack Overflow用户

发布于 2015-10-05 14:20:00

我们需要使用substitutebquote函数来获取列表中未计算的表达式。

代码语言:javascript
复制
microbenchmark(list = list(j1 = bquote({sample(1e5)}),
                           j2 = bquote({sample(2e5)}),
                           j3 = bquote({sample(3e5)})))

作业可以使用lapply生成,但我们必须小心使用环境。

代码语言:javascript
复制
jobs = lapply(1000*1:3, function(s) local({s = s; bquote(sample(.(s)))}) )
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32950881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档