如何禁用编译器和JVM优化?
2022-09-02 05:24:11
我有这个代码正在测试与: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或编译器优化,所以测试将是有效的,并且实际上将显示差异。
如何确定?
编辑:我更改了代码示例,因此它将更加清晰。我在这里检查的是调用不同实现所需的时间 - vs .getTimeInMilli()
Calendar
System