如何进行ScalaMeter链配置



我很困惑如何像这个那样配置ScalaMeter链

val standardConfig = config(
Key.exec.minWarmupRuns -> 5,
Key.exec.maxWarmupRuns -> 10,
Key.exec.benchRuns -> 10,
Key.verbose -> true
) withWarmer(new Warmer.Default)

第一个config(...)表达式返回MeasureBuilder[T, U]类型,我理解这一点。

然而,我们如何将同样返回MeasureBuilder类型的第二个表达式withWarmer(new Warmer.Default)链接起来呢。

起初,我猜测MeasureBuilder类型实现了允许我们这样做的apply方法,但在测量一段代码的性能之前的最后一步,我们需要

val partime = standardConfig measure {
...
}

其中CCD_ 6返回不是CCD_ 8的CCD_。

那么,ScalaMeter配置如何才能像那样链接表达式呢?

请首先注意,config方法是在导入后暴露的:

import org.scalameter.config

这是因为它是在包级别的伴随对象上声明的:

package object scalameter extends MeasureBuilder[Unit, Double](

因此,当您申报val standardConfig = config(...)时,您将获得MeasureBuilder[Unit, Double]

然后,类MeasureBuilder公开了一个实际调用的方法withWarmer,并返回一个MeasureBuilder[Unit, Double],同时应用了configuration和warmer。

MeasureBuilder公开方法measure:

def measure[S](b: =>S): Quantity[U] = measured(b)._2

在您的示例中返回CCD_ 17。

相关内容

  • 没有找到相关文章

最新更新