首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式使用不同的参数对同一函数进行microbenchmark::microbenchmark?

如何以编程方式使用不同的参数对同一函数进行microbenchmark::microbenchmark?
EN

Stack Overflow用户
提问于 2017-03-25 23:23:16
回答 1查看 226关注 0票数 0

对于我计划在位置上使用的函数,我有一个无界的参数命名列表,例如

代码语言:javascript
复制
list(
   method1 = "method1",
   method2 = "method2",
   ...,
   methodn = "methodn"
)

使用

代码语言:javascript
复制
function(method) {
   if (identical(method, "method1")) {Sys.sleep(1); return(NULL)}
   if (identical(method, "method2")) {Sys.sleep(2); return(NULL)}
   Sys.sleep(nchar(method))
   return(NULL)
}

如何使用package:microbenchmark使用提供的参数对给定函数进行基准测试?如果基准测试本身被命名为位置参数,则在我的源列表中命名为加分。

我所见过的包:微基准测试用法的要点是,要进行基准测试的任务以点为单位进行指定。参数list可用于计算未计算的表达式;这似乎是编程使用的正确途径。但是,因为expression()将括号的内部视为文字,所以我还没有找到一种在expression()中注入参数的方法。我用parse()走上了一条黑暗的道路,并让它工作了--但似乎还有更好的方法。

EN

回答 1

Stack Overflow用户

发布于 2017-12-20 20:06:48

一种解决方案是将cat和sprintf与for循环一起使用,尽管如果您有许多参数组合,这可能会出现问题。

代码语言:javascript
复制
cat("res <- microbenchmark(\n")
for (i in 1:4){
  for (j in 1:4) {
    cat(sprintf("f_%i_%i = f(%i, %i),\n", i, j, i, j))
  }
}
cat(")\n")

然后复制-粘贴并运行代码(删除倒数第二行中的逗号)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43018161

复制
相关文章

相似问题

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