(转自here)
我正在尝试测量/记录任务的运行时间。
我通过在之前添加一个任务并在之后添加一个任务来查看“包装”任务,但这不会每次都有效,因为sbt仅保证部分订单。
更好的包装将是这样的:
wrappedTask := {
startMeasuringTime()
somehowInvoke(myTaskKey in SomeContext)
endMeasuringTime()
}
这个“somehowInvoke”应该是什么?
答案 0 :(得分:3)
测量任务所需的时间需要来自任务执行者的支持。 正如您所暗示的那样,您不能仅通过使用任务原语来执行此操作。 我推了一些我写过的sample code,显示了这个想法。
示例代码无法处理的复杂因素是用户在概念上认为是一个任务(例如,编译)可能实际上被实现为多个任务,并且需要组合这些时序。此外,像internalDependencyClasspath
这样的任务调用“其他任务(flatMap)”,因此其执行时间包括“被调用”任务的执行时间。
编辑:这是作为602c1759a1885和1cc2f57e158389759中的实验性功能实现的0.13.0。 ExecuteProgress接口提供了足够的信息,以前描述的问题不是问题。