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

Reason behind additional error time in this timing code

我最近一直在研究 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;

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

这样做是为了减少执行 long finish = System.nanoTime(); 指令所需的时间。作者不希望停止秒表的行为计入正在测试的代码。

除非你真的在处理纳米级精度,否则这就太过分了,甚至可能无法真正说明作者的意图。