SummarizedBenchmark框架由buildBench ()函数。在一个新数据集中运行几个方法时,有时会出现错误。中实现的错误处理方法buildBench ()本小插图中描述了函数,并提供了禁用错误处理的选项。SummarizedBenchmark包版本:2.15.0 "SummarizedBenchmark 2.15.0
当运行一个大型基准测试研究时,通常会有一个或一小部分方法在执行过程中失败。这可能是错误指定的参数、软件中的潜在错误或任何其他原因的结果。默认情况下,方法抛出的错误在buildBench ()或updateBench ()(见特点:迭代的基准测试有关updateBench ())以方便用户的方式捕捉和处理。只要单个方法执行时没有任何错误,则aSummarizedBenchmark对象照常返回,失败方法的分析列设置为NA.此外,相应的错误消息存储在对象的元数据中以供参考。
作为一个例子,考虑下面的例子,其中我们运行了两个简单方法的基准测试。第一,slowMethod等待5秒后抽取5个随机正态样本,第二,fastMethod立即抽取5个随机正态样本。每个方法都经过两个后处理函数,keepSlow而且makeSlower,keepFast而且makeSlower,分别。这导致了三个部分重叠的分析,keepSlow,keepFast而且makeSlower.通过这个例子,我们还演示了如何跨方法处理不匹配的测试。
bdslow < -BenchDesign(data =tdat)% > %调用addMethod(“slowMethod”,函数() {Sys.sleep(5);rnorm(5)},帖子=列表(keepSlow =的身份,makeSlower =函数(x) {Sys.sleep(5);x}))% > %调用addMethod(“fastMethod”,函数() {rnorm(5)},帖子=列表(keepFast =的身份,makeSlower =函数(x) {Sys.sleep(5);x}))
我们并行运行这些方法平行= TRUE的超时限制为1秒BPPARAM.自然地,slowMethod会失败,fastMethod将会失败makeSlower后处理功能。
##设置超时1
# # ! !在buildBench中发现错误!!# # ! !方法:'fastMethod'出错,post: 'makeSlower'出错
# # ! !原始信息:## !!达到运行时间限制
注意,在执行过程中,由buildBench ()与失败方法的名称和适当时的后处理函数一起打印到控制台。
我们可以验证一个有效的SummarizedBenchmark对象仍然返回剩余的结果。
## class: SummarizedBenchmark ## dim: 5 2 ## metadata(1): sessions ## assays(3): keepSlow makeSlower keepFast ## rownames: NULL ## rowData names(3): keepSlow makeSlower keepFast ## colnames(2): slowMethod fastMethod ## colData names(4): func。PKG funcc . PKG .vers funcc . PKG .manual session.idx
我们还可以检查化验结果。
## $keepSlow ## slowMethod fastMethod ## [1,] -0.4315125 NA ## [2,] -1.7164219 NA ## [4,] 1.1766790 NA ## [5,] 1.2895643 NA ## ## $makeSlower ## slowMethod fastMethod ## [1,] -0.4315125 NA ## [2,] -1.7164219 NA ## [3,] - 0.4792104 NA ## [4,] 1.1766790 NA ## [5,] 1.2895643 NA ## ## $keepFast ## slowMethod fastMethod ## [1,] NA 1.5507635 ## [2,] NA 0.9790349 ## [3,] NA 0.7599244 ## [4,] NA -0.5835270 ## [5,] NA -0.2664625
注意,大多数列只包含NA值。这些列对应两个返回错误的方法,以及缺少后处理函数的方法,例如nokeepSlow函数的定义fastMethod方法。而NA值不能用于区分的源NA值,这在会话的列表SummarizedBenchmark元数据。而会话对象是一个包含所有以前会话信息的列表,我们只对当前的第一个会话感兴趣。(有关为什么可能运行多个会话的详细信息,请参阅特点:迭代的基准测试装饰图案)。
## [1] "methods" "results" "parameters" "sessionInfo"
在会话,有一个“结果”条目,包括方法和后处理功能(化验)的每次组合的结果摘要。的条目结果可以取以下三个值之一:“成功”,“失踪”,或类的错误消息buildbench-error.查看这些结果的最简单方法是传递结果到R底函数,simplify2array ().
## slowMethod fastMethod ## keepFast“missing”达到运行时间限制## keepSlow“success”“missing”## makeSlower“success”“success”
在返回的表中,列对应于方法,行对应于分析。我们清楚地看到,许多方法由于超过了指定的时间限制而失败。如果我们更仔细地检查其中一个条目,我们会看到它确实是abuildbench-error发生的对象(“起源”)“主要”函数。
# #[1]“成功”
如果不需要这种错误处理,并且用户希望在抛出错误时终止基准测试实验,则可选参数catchErrors = FALSE可以指定为buildBench ()或updateBench ().通常,不建议这样做,因为为所有非失败方法计算的输出也会丢失。因此,整个基准测试实验将需要重新执行。