此计时代码中额外错误时间背后的原因

时间:2017-06-10 12:40:12

标签: java benchmarking

我最近一直在使用java中的一些性能示例,并且遇到了这个片段:

long start = System.nanoTime();
// code to be timed goes here...
long finish = System.nanoTime();
long error = System.nanoTime() - finish;
long duration = finish - start - error;

现在我理解代码正在做什么,但不一定为什么 error时间也被减去了?

很多次我见过这样的事情:

long start = System.nanoTime();
// code to be timed goes here...
long finish = System.nanoTime();
long duration = finish - start;

但之前没有这个附加错误时间的概念。

1 个答案:

答案 0 :(得分:2)

这样做是为了减去执行third_party_lib: $(MAKE) --eval .NOTPARALLEL: -C $@ 指令所需的时间。作者并不希望停止秒表的行为与被测试的代码相反。

除非你真的在处理纳米级别的精确度,否则这是过度的,甚至可能不会真正解释作者的意图。