我有这段代码正在测试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()
所需的时间-Calendar
与System
。 最佳答案
我认为您需要禁用JIT。将下一个选项添加到您的运行命令中:
-Djava.compiler=NONE