Windows上的Java程序比Ubuntu快

时间:2014-05-07 16:34:29

标签: java windows performance postgresql ubuntu

我编写了一个用Postgres-DB操作的Java程序。

问题是,在Windows 7上执行程序需要4058ms,在Ubuntu 12.10上需要11250ms。

  • Windows机器:Core i7,4x1.6 GHz和4GB Ram
  • Ubuntu机器:Xeon E3-1230,配备4x3.3GHZ和32GB Ram

我已经单独测试了java和db,但是Ubuntu机器总是更快。

测量执行时间:

  1. Java程序有很多循环而且没有println:Windows 9601ms,Ubuntu 2851ms
  2. Postgres功能,可插入1.000.000个条目:Windows:6045ms,Ubuntu:2136ms
  3. 我使用OpenJDK和Oracle Java测试了服务器,OpenJDK的速度提高了10%。

    感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

要尝试的一件事是通过' -client' JVM的选项。 JVM可以以两种不同的模式运行:'客户端'和'服务器'。服务器模式意味着某些优化将在JVM将长时间(几小时,几天甚至几周)启动的假设下完成。 '客户机'模式意味着优化将在假设这是一个典型的"开始,做一些事情,退出"类型过程。

默认情况下启用哪种模式取决于您的安装。当您将JVM安装到计算机上时,安装程​​序会检查计算机的规格以尝试确定它是服务器类型计算机还是客户端计算机。如果它看到一堆RAM,它可能会决定将该机器用作服务器并使其成为默认模式' server'当你真正想要的是'客户'对于这种类型的过程。 (您的Windows机器可能配置为在客户端模式下运行。)

因此,要进行真正的基准测试,您需要确保两个JVM都以相同的模式运行。保证这一点的最佳方法是手动传递' -client'或者' -server'调用java命令时的JVM参数。