java performance Windows vs Linux



我开发了一个通常在Linux上运行的Java应用程序。这是一个带有Swing的POJO应用程序。性能相当不错。

现在我尝试在具有2Gb RAM的Windows XP上运行它,在具有类似或更高效力的机器上,性能要差得多。我观察到它使用 100% CPU。

例如:

  • 一个创建窗口的过程,非常繁重,包含许多组件:Linux 5 秒,Windows 12。
  • 一个通过大量查询访问PostgreSQL数据库的进程(服务器和JDBC驱动程序是相同的):23秒Linux,Windows 43。

    我也尝试了具有类似功能的虚拟化Windows机器,结果明显更好!

    正常吗?我可以分配哪些参数来提高性能?

除非你在同一台机器上比较Linux和Windows XP,否则很难说出有什么区别。 可能是虽然 CPU 更快,但 GFX 卡和磁盘子系统更慢。

Java 将所有这些 IO 和 GFX 活动传递给底层操作系统,您唯一可以做的不同的事情就是减少工作或更高效地工作。这可能会使两个系统都更快,因为没有一个操作系统可以调整。

尝试运行 Java Visual VM(作为 JDK 的一部分分发):附加到您的应用程序,然后使用 CPU 性能分析器精确确定所有 CPU 时间的去向。

JRE 部件的行为可能存在细微差异(想到 Swing),JRE 对不良做法的反应非常无情(比如在 Swing 中从错误的线程做事)。

由于您没有线索,我将尝试在两种环境中分析相同的用例,看看花费时间的地方是否会出现任何显着差异。这有望揭示一个提示。

编辑:并确保您不要在刹车打开的情况下运行 Windows(又名。防病毒和其他可以杀死系统性能的"有用"软件)。

最新更新