在以下代码中:
long startingTime = System.nanoTime();
int max = (int) Math.pow(2, 19);
for(int i = 0; i < max; ){
i++;
}
long timePass = System.nanoTime() - startingTime;
System.out.println("Time pass " + timePass / 1000000F);
Run Code Online (Sandbox Code Playgroud)
我正在尝试计算在我的机器上执行简单操作所需的时间.
所有高达19的幂的计算都会增加运行此代码所需的时间,但当我超过19(达到max int值31)时,我惊讶地发现它对所需的时间没有影响.它总是在我的机器上显示5毫秒!
怎么会这样?
Mar*_*nik 12
您刚刚目睹了HotSpot将您的整个循环优化为遗忘.这很聪明.你需要在循环中做一些真正的动作.我建议引入一个int累加器var并对其进行一些按位操作,最后打印结果以确保在循环后需要它.