我最近一直在使用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;
但之前没有这个附加错误时间的概念。
答案 0 :(得分:2)
这样做是为了减去执行third_party_lib:
$(MAKE) --eval .NOTPARALLEL: -C $@
指令所需的时间。作者并不希望停止秒表的行为与被测试的代码相反。
除非你真的在处理纳米级别的精确度,否则这是过度的,甚至可能不会真正解释作者的意图。