我们正在使用Guava Stopwatch
计算项目中的某些代码块。
我们遇到过这种情况,这种情况会发生在外部的闭源组件中。我们能够以毫秒格式提取时序,但仍然希望使用Stopwatch
toString()
来格式化数据,以便无论时间源如何都能保持标准
但是,toString()
显然是基于Stopwatch
的内部状态,实际执行格式化的方法(chooseUnit()
和abbreviate()
)是{ {1}}。
我发现实现我们想要的唯一方法是以下 - 有更好的方法吗?
private
我们正在使用Guava 18.0。
回应@RC:我可以复制方法 - 毕竟它是所有开源的。但这意味着重复代码,这对于维护来说并不是很好,而且当前使用String executeTimeAsString = Stopwatch.createStarted(new Ticker() {
boolean firstRead = true;
@Override
public long read() {
if (firstRead) {
firstRead = false;
return 0L;
}
return TimeUnit.MILLISECONDS.toNanos(durationInMilliseconds);
}
}).stop().toString();
的所有代码都需要迁移到这个新的实用程序方法,或者保留在Stopwatch
上。在Google更改Stopwatch
的{{1}}方法之前,这是正常的。