Akka在Linux上的性能与在windows上的编译



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

为了在8核32 GB的Linux机器上运行相同的程序,我将生成的类文件和scala + akka jar文件ftp到Linux机器上。

Linux机器使用的是Server Edition Java, windows机器使用的是Client Edition Java。

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

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

是由于编译和运行环境的差异吗?我能做的就是调查这种行为的原因。

EDIT:编译完成的windows环境是32位,而linux机器上的java是64位服务器。这对性能有影响吗?

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

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

您应该特别关注内存配置(如@alex23所建议的)和-server标志。另外,请确保您的Linux环境使用的JVM与Windows环境来自同一个制造商。Windows通常使用Sun JVM,而某些linux可能仍然使用旧的Oracle JVM。

在命令行上试试java -version

同样,与其比较一个复杂程序的结果,不如先尝试一个更简单的程序。尝试确定启动JVM的开销,以及Java/Scala代码的有效运行时。

基于windows的构建在Linux机器上导致性能问题的想法听起来极不可能。您可以通过在Linux机器上编译软件并运行它来轻松检查这一点。

最新更新