我很困惑如何像这个那样配置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。