我有这段代码正在测试Calendar.getInstance().getTimeInMillis()System.currentTimeMilli():

long before = getTimeInMilli();
for (int i = 0; i < TIMES_TO_ITERATE; i++)
{
  long before1 = getTimeInMilli();
  doSomeReallyHardWork();
  long after1 = getTimeInMilli();
}
long after = getTimeInMilli();
System.out.println(getClass().getSimpleName() + " total is " + (after - before));

我想确保没有JVM或编译器优化发生,因此测试将是有效的,并且将实际显示出差异。

如何确定?

编辑:我更改了代码示例,使它更加清晰。我在这里检查的是在不同的实现中调用getTimeInMilli()所需的时间-CalendarSystem

最佳答案

我认为您需要禁用JIT。将下一个选项添加到您的运行命令中:

-Djava.compiler=NONE

09-15 19:44