Java 64位的性能是否优于32位版本?

时间:2009-02-26 04:03:40

标签: java 64-bit 32-bit

我注意到Sun提供了64位版本的Java。它的性能是否优于32位版本?

8 个答案:

答案 0 :(得分:18)

几乎总是64位会慢一些。

引用HotSpot FAQ中的Sun:

  

性能差异比较   一个运行在64位上的应用程序   平台与32位平台相比   SPARC约为10-20%   移动到64位时会降级   VM。在AMD64和EM64T平台上   差异范围从0-15%取决于   关于指针访问量   你的应用程序执行。

链接上有更多详细信息。

答案 1 :(得分:12)

定义您的工作量以及“执行”对您意味着什么。

这对我来说是一种令人不安的烦恼,作为一个长期存在的表演爱好者。特定变更“是否表现更好”首先取决于工作量,即您要求程序执行的操作。

64位Java在计算量很大的情况下通常会表现得更好。经典的Java程序具有大量的I / O负载和繁重的网络负载; 64位与32位可能无关紧要,但操作系统通常会这样做。

答案 2 :(得分:3)

如果您需要远远超过1.2 GB,那么64位的性能会更好。在某些平台上,您最多可以获得3 GB,但如果您需要4 - 384 GB,则64位是您唯一的选择。

我相信Azul支持384 GB的JVM,有人知道你能不能更高?

答案 3 :(得分:2)

在大多数CPU架构上,32位比64位快,其他条件相同。 64位指针需要两倍的带宽才能传输到32位。但是,x64指令集架构在x86上增加了一点理智,因此最终速度更快。长类型的处理量通常很小。

当然它还取决于Java的实现。除了编译器,您可能会发现实现方面的差异;例如,NIO假设64位指针。另请注意,Sun之前只为x64提供了更快的服务器HotSpot实施。这意味着如果您指定-d64,您还将从客户端切换到服务器HotSpot,IIRC。

答案 4 :(得分:2)

一些改进:64位双精度运算的计算速度与32位浮点运算速度相同,以及64位长运算与int相比。

因此,如果您运行的代码数量很多,您可能会看到真正的改进。

答案 5 :(得分:2)

我知道这个问题已经很老了,投票的答案在撰写时可能是正确的。但是现在生活在2018年,情况发生了变化。

我只是在Java 8 32Bit JVM的Win 10 64Bit上运行的Java客户端应用程序遇到问题。它在26秒内从HttpsURLConnection的{​​{1}} 读取了 174 MB 数据,速度非常慢。事实证明,服务器和网络不是此原因。

认为“嘿,32位和64位JRE之间不能有很大的区别”,直到我尝试让64位JVM执行完全相同的代码之前,它花了一些时间。幸运的是,我最终做到了:它在5秒内读取了相同的 174MB

我不知道是否可以使它更快,但是关键要点是:

  • jre1.8.0_172 32位:6.692MB / s
  • jre1.8.0_172 64位:34.8MB / s

对于在Windows 10 64位上执行的非常相同 jar文件。

我不知道这可能是什么原因,但是我可以通过“是的,64位Java优于32位Java”来回答这个问题。另请参阅the answer of my question中有关此问题的数字。

答案 6 :(得分:1)

我的经历与其他答案不同。

Java 64bit可能比32位更快。至少我的测试一直都是!当使用少于4GB时,指针参数无效,因为64位VM也将在内部使用短指针。然而,您可以获得64位CPU的更快指令集!

我使用Windows 7和JDE1.8.0_144对此进行了测试,但可能真正的原因是内部JVM设置不同。当您使用64位JVM时,它以“服务器”模式启动,而32位VM以“客户端”模式启动。

答案 7 :(得分:-2)

是的,特别是如果您的代码是针对64位平台而构建的。