7
为什么在x64 Java中long比int慢?
我在Surface Pro 2平板电脑上运行带有Java 7更新45 x64(未安装32位Java)的Windows 8.1 x64。 当i的类型为long时,下面的代码花费1688ms,而当i的类型为int时,下面的代码花费109ms。为什么长(64位类型)比具有64位JVM的64位平台上的int慢一个数量级? 我唯一的猜测是,与64位整数相比,CPU需要更长的时间来添加32位整数,但这似乎不太可能。我怀疑Haswell不会使用纹波加法器。 我正在Eclipse Kepler SR1中运行它,顺便说一句。 public class Main { private static long i = Integer.MAX_VALUE; public static void main(String[] args) { System.out.println("Starting the loop"); long startTime = System.currentTimeMillis(); while(!decrementAndCheck()){ } long endTime = System.currentTimeMillis(); System.out.println("Finished the loop in " + (endTime - startTime) …