2

我在我的 Windows 机器上安装了 Scala IDE。当我在同一台机器上运行我的测试程序时,我得到了一些性能数据。

为了在 Linux 机器(一台 8 核 32 GB 机器)上运行相同的程序,我将生成的类文件和 scala + akka jar 通过 FTP 传输到 Linux 机器。

Linux 机器使用 Server Edition Java,Windows 机器使用 Client Edition Java。

当我在所有路径设置正确的 Linux 机器上运行相同的程序时,我的性能比 Windows 机器差。

为什么会这样?该程序能够正常运行,但在高端机器和服务器版本上表现不佳。

是因为编译和运行环境的不同吗?我能做些什么来调查这种行为的原因。

编辑:编译完成的 windows env 是 32 位,linux 机器上的 java 是 64 位服务器。这对性能有什么影响吗?

4

1 回答 1

0

java如果您在两台机器上发布 Java 配置,即 JVM 版本和在两个环境中传递给命令的所有标志,将会很有帮助。

另外,你如何衡量性能,你得到什么值?是否涉及其他任何内容,例如 I/O、网络流量等?如果不是,您的程序中使用了哪些算法?它是一个计算然后终止的程序,还是一个运行直到关闭的服务器程序?

您应该特别关注内存配置(如@alex23 所建议的)和-server标志。此外,请确保您的 Linux 环境使用与 Windows 环境相同制造商的 JVM。Windows 通常带有 Sun JVM,而某些 Linux 可能仍然有旧的 Oracle JVM。java -version在命令行上尝试。

此外,不要比较复杂程序的结果,而是先尝试一个更简单的程序。尝试确定启动 JVM 的开销与 Java/Scala 代码的有效运行时间。

基于 Windows 的构建会导致 Linux 机器出现性能问题的想法听起来不太可能。您可以通过在 Linux 机器上编译您的软件然后运行它来轻松地检查这一点。

于 2013-05-16T12:00:52.893 回答