SummarizedBenchmark
框架是由buildBench ()
函数。全心全意,错误发生在当一个新的数据集上运行几个方法,实现错误处理的方法buildBench ()
这个描述中描述的功能是随着选项来禁用错误处理。SummarizedBenchmark包版本:测试盒框”SummarizedBenchmark测试盒框
当运行一个大型基准研究,不是非同寻常,单个或一小部分方法在执行过程中可能会失败。这可能是misspecified参数的结果,一个潜在的bug的软件,或任何其他原因。默认情况下,错误抛出的过程中失败的方法buildBench ()
或updateBench ()
(见特点:迭代的基准测试有关updateBench ()
)以用户友好的方式捕获和处理。只要一个方法执行没有任何错误SummarizedBenchmark对象返回像往常一样,分析列设置为失败的方法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
后处理功能。
# # ! !误差在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]“主要”
如果不希望这个错误处理,用户希望基准实验终止则抛出一个错误时,可选参数catchErrors = FALSE
可以指定eiher吗buildBench ()
或updateBench ()
。一般来说,这是建议对所有非故障方法的输出计算也将丢失。因此,整个基准实验需要重新执行。