内容

1简介

当运行一个大型基准测试研究时,通常会有一个或一小部分方法在执行过程中失败。这可能是错误指定的参数、软件中的潜在错误或任何其他原因的结果。默认情况下,方法抛出的错误在buildBench ()updateBench ()(见特点:迭代的基准测试有关updateBench ())以方便用户的方式捕捉和处理。只要单个方法执行时没有任何错误,则aSummarizedBenchmark对象照常返回,失败方法的分析列设置为NA.此外,相应的错误消息存储在对象的元数据中以供参考。

2简单的案例研究

作为一个例子,考虑下面的例子,其中我们运行了两个简单方法的基准测试。第一,slowMethod等待5秒后抽取5个随机正态样本,第二,fastMethod立即抽取5个随机正态样本。每个方法都经过两个后处理函数,keepSlow而且makeSlower,keepFast而且makeSlower,分别。这导致了三个部分重叠的分析,keepSlowkeepFast而且makeSlower.通过这个例子,我们还演示了如何跨方法处理不匹配的测试。

我们并行运行这些方法平行= 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]“成功”

3.禁用处理

如果不需要这种错误处理,并且用户希望在抛出错误时终止基准测试实验,则可选参数catchErrors = FALSE可以指定为buildBench ()updateBench ().通常,不建议这样做,因为为所有非失败方法计算的输出也会丢失。因此,整个基准测试实验将需要重新执行。

4参考文献