Java+Netbeans 两台机器之间显着的图形性能差异

Java+Netbeans significant graphics performance variation between two machines

当 运行 正在开发我正在开发的游戏(2D 射击游戏)的图形部分(使用 Java、Slick2D 和 dyn4j 时,两台机器之间的性能差异很大) 并且无法弄清楚为什么会这样。除了硬件之外,两台机器的设置或多或少相同。

系统设置

Dekstop - 定制的 Intel Core2 Quad Q6600 @ 2.4Ghz,配备 Intel D975XBX2 主板,图形:NVidia GeForce 7300 SE/7200 GS(驱动程序版本 9.18.13.908 日期30/01/2015)

笔记本电脑 - 配备 AMD Athlon X2 双核 QL-64 @ 2.1Ghz 的 Toshiba Satellite L450D,显卡:ATI Radeon HD 3200(驱动程序版本 8.634.1.0,日期为 27/072009 )

两台机器 运行 Windows 家庭高级版 64 位并且安装了 8Gb 内存。两者都安装了 Netbeans 8.0.2 并使用 JRE/JDK 8.0.40。两个 Netbeans 安装具有相同的(默认安装)启动选项,如下所示。

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m 
J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true 
-J-java2d.noddraw=true -J-Dsun.java2d.dpiaware=true 
-J-Dsun.zip.disableMemoryMapping=true"

由于 Windows 更新出现问题,我最近在台式机上进行了全新构建;这台机器只安装了音乐工作室软件和 java 开发工具,没有任何垃圾。

这台笔记本电脑是一台普通的"install anything you want"机器,自从我几年前买它以来,它已经有各种各样的东西了。

性能

桌面: 首先 运行 启动并启动 Netbeans 后游戏正常 运行 没问题。然后在 运行 秒或一段时间后(很难确定)性能下降到 10FPS。当性能不佳时,CPU 运行 介于 25-30% 之间,而 Java 占用可用 CPU 的大约 25%。对于可变性能的示例,我只是重新启动了机器和 运行 代码——没问题。重新运行 5次,还是没问题。浏览代码 5 分钟并更改了 1 行(在总和中添加了“-1”),重新 运行 代码,它 运行s 为 10FPS。

笔记本电脑: 游戏总是 运行 每秒 60 帧(代码中限制为这个速率)。 CPU 运行 在 30-40% 左右,Java 在 13% 和 35-40% 之间(似乎有点反弹)。我在笔记本电脑上从来没有任何性能问题。

请注意,我在 Dropbox 上有 运行 游戏的独立编译版本,并且在两台机器上都有 运行 并得到相同的结果,这表明这是一个 JVM问题而不是 Netbeans 问题..?

内存使用

我已跟踪内存使用情况以查看这是否是交换问题,但似乎不是 – 下面的数据显示了 运行 运行应用程序时两台机器上的内存使用情况。为了完整起见,我已经包含了桌面的启动和 good/bad 性能信息。

桌面:

笔记本电脑:

探索的选项

正如我之前提到的,我在 Netbeans 和独立 jar 中都有 运行 该应用程序,并且得到了相同的结果。这表明这对我来说不是 Netbeans 问题。

两台机器具有相同的 Netbeans config/memory 选项这一事实表明内存配置也不是问题..?

该项目存储在 Dropbox 文件夹中并在两台机器之间共享,因此我在两台机器上 运行 设置了完全相同的 code/project,每种情况下都安装了相同的库。 (我使用的是 dyn4j 版本 3.1.11 和带有 LWJGL 2.9.0 的 Slick2D build 237)

我在这里找到了一个类似的线程(见下文),这表明图形驱动程序和每台机器上的 运行 图形测试可能存在问题。我开发了一个图形测试应用程序来测试在缓冲区和屏幕之间复制和绘制大图像的不同方法。这 运行 在我的台式机上的速度是在笔记本电脑上的两倍,这表明图形性能应该没问题..?

How to approach Java 2D performance variations between different computers?

我尝试在 netbeans.conf 文件中或作为 运行 VM 选项添加“–J –Dsun.java.opengl=true”,但没有效果。我假设使用 Slick2D 意味着我正在使用 opengl 渲染并且不需要这个选项。

有没有人知道问题可能是什么,或者我该如何进一步探讨这个问题?我的台式机是我的主要开发机器,它无法正常工作对我来说是一个真正的问题。

根据我的最后评论,安装新显卡 (Asus GeForce GTX 750 Ti) 似乎已解决问题。自从 运行 使用此卡的游戏以来,无论是通过 Netbeans 还是编译的独立版本,我都没有遇到任何性能问题。