内容

1介绍

当运行一个大型基准研究,不是非同寻常,单个或一小部分方法在执行过程中可能会失败。这可能是misspecified参数的结果,一个潜在的bug的软件,或任何其他原因。默认情况下,错误抛出的过程中失败的方法buildBench ()updateBench ()(见特点:迭代的基准测试有关updateBench ())以用户友好的方式捕获和处理。只要一个方法执行没有任何错误SummarizedBenchmark对象返回像往常一样,分析列设置为失败的方法NA。此外,相应的错误消息存储在元数据对象的引用。

2简单的案例研究

作为一个例子,考虑下面的例子我们运行情况基准两个简单的方法。第一,slowMethod吸引5随机正常样本等待5秒后,第二,fastMethod立即吸引5随机正常样本。每个方法然后通过两个后处理功能,keepSlowmakeSlower,keepFastmakeSlower,分别。这三部分重叠的化验结果,keepSlow,keepFastmakeSlower。在这个例子中,我们也证明不匹配的分析处理方法。

我们使用并行运行这些方法平行= TRUE并指定一个1秒的超时限制BPPARAM。自然地,slowMethod会失败,fastMethod期间将会失败makeSlower后处理功能。

# # ! !误差在buildBench ! !# # ! !错误方法的主要功能:“slowMethod”
# # ! !原始消息:# # ! !达到运行时间限制
# # ! !误差在buildBench ! !# # ! !错误的方法:“fastMethod”,帖子:“makeSlower”
# # ! !原始消息:# # ! !达到运行时间限制

注意,在执行过程中,被错误buildBench ()被打印到控制台以及失败的方法的名称和后处理功能在适当的时候。

我们可以确认有效SummarizedBenchmark对象仍是带着剩下的结果。

# # # #类:SummarizedBenchmark暗淡:5 2 # #元数据(1):会话# #化验(3):keepFast keepSlow makeSlower # # rownames:零构成了rowData名称(3):# # keepFast keepSlow makeSlower # # colnames (2): slowMethod fastMethod # # colData名称(4):函数。pkg func.pkg。更func.pkg。手动session.idx

我们也可以检查化验的值。

# # # # # # $ keepFast slowMethod fastMethod [1] NA -0.007749586 # # [2] NA -0.827516796 # # [3] NA 1.370333105 # # [4] NA -1.817956411 # # [5] NA keepSlow美元-0.106365593 # # # # # # slowMethod fastMethod # # [1] NA NA # # [2] NA NA # # [3] NA NA # # [4] NA NA # # [5] NA NA makeSlower美元# # # # # # slowMethod fastMethod # # [1] NA NA # # [2] NA NA # # [3] NA NA # # [4] NA NA # # [5] NA NA

注意,只包含最列NA值。这些列对应于这两种方法都返回错误,以及方法缺失的后处理功能,例如:没有keepSlow函数的定义fastMethod方法。而NA值不能用来区分的来源NA值,这是记录会话的列表SummarizedBenchmark元数据。而会话对象是一个包含所有先前的会话信息列表,目前我们只是感兴趣,第一次会议。(更多细节为什么多个会话可能会运行,看到特点:迭代的基准测试装饰图案)。

# #[1]“方法”“结果”的“参数”“sessionInfo”

会话,有一个“结果”入口包括一个总结的结果为每个组合方法和后处理功能(试验)。的条目结果可以把三个值之一:“成功”,“失踪”类的,或者一个错误消息buildbench-error。最简单的方法把这些resultsis通过结果基本的R函数,simplify2array ()

# # # # slowMethod fastMethod keepSlow“达到运行时间限制”“达到运行时间限制”# # makeSlower“达到运行时间限制”“失踪”# # keepFast“失踪”“成功”

在返回的表,行和列对应方法,对应分析。我们清楚地看到,许多方法失败由于超过指定的时间限制。如果我们检查这些条目之一,更多的关闭,我们发现它的确是一个buildbench-error对象发生(“起源”)“主要”函数。

# #[1]“达到运行时间限制”# # attr(,“类”)# # [1]“buildbench-error”# # attr(,“起源”)# #[1]“主要”

3禁用处理

如果不希望这个错误处理,用户希望基准实验终止则抛出一个错误时,可选参数catchErrors = FALSE可以指定eiher吗buildBench ()updateBench ()。一般来说,这是建议对所有非故障方法的输出计算也将丢失。因此,整个基准实验需要重新执行。

4引用