我如何以编程方式使用不同的参数microbenchmark :: microbenchmark相同的函数?

问题描述 投票:0回答:1

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

list(
   method1 = "method1",
   method2 = "method2",
   ...,
   methodn = "methodn"
)

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()将parens的内部视为文字,我没有找到一种方法在expression()中注入我的参数。我走了一条黑暗的道路与解析(),并使它工作 - 但似乎必须有一个更好的方法。

r benchmarking microbenchmark
1个回答
0
投票

一种解决方案是使用带有for循环的cat和sprintf,尽管如果你有许多参数组合可能会有问题。

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")

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

© www.soinside.com 2019 - 2024. All rights reserved.