在运行我正在开发的游戏的图形部分(2D射击游戏)时,我正在获得两台机器之间的显着性能差异(使用Java,Slick2D和dyn4j)并且无法解决为什么会发生这种情况。除硬件外,两台机器的设置大致相同。
Dekstop - 定制的英特尔酷睿2四核Q6600 @ 2.4Ghz配英特尔D975XBX2主板,显卡:NVidia GeForce 7300 SE / 7200 GS(驱动程序版本9。18。1。908日期为2015年1月30日)< / p>
笔记本电脑 - 采用AMD Athlon X2双核QL-64 @ 2.1Ghz的东芝Satellite L450D,显卡:ATI Radeon HD 3200(驱动程序版本8.634.1.0,日期为27/072009)
这两台机器都运行Windows Home Premium 64位并安装了8Gb RAM。两者都安装了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开发的东西,没有任何垃圾。
笔记本电脑是一般的“安装你想要的任何东西”机器,自从几年前我买它以来就已经有各种各样的了。
桌面:在启动后首次运行并启动Netbeans游戏通常正常运行。然后经过短暂的运行或一段时间(很难将其降低)性能下降到10FPS。当性能较差时,CPU运行在25-30%之间,Java占用可用CPU的25%左右。对于可变性能的一个例子,我只是重新启动机器并运行代码 - 没问题。重新运行5次仍然没有问题。将代码浏览了5分钟并进行了1行更改(在总和中添加了“ - 1”),重新运行代码并以10FPS运行。
笔记本电脑:游戏总是以60 FPS运行(代码中限制为此速率)。 CPU运行在30-40%左右,Java占13%到35-40%之间(似乎有点反弹)。我的笔记本电脑上没有任何性能问题。
请注意,我在Dropbox上运行了一个独立的,已编译的游戏版本,并在两台机器上运行并得到相同的结果,这告诉我这是一个JVM问题,而不是Netbeans问题。?< / p>
我已跟踪内存使用情况以查看这是否是一个交换问题而且似乎不是 - 下面的数据显示了运行应用时两台计算机上的内存使用情况。为完整性,我已经包含了桌面的启动和好/坏性能信息。
桌面:
笔记本:
正如我之前提到的,我已经在Netbeans中运行了应用程序,并且作为一个独立的jar运行,并且具有相同的结果。这表明它对我来说不是一个Netbeans问题。
这两台机器具有相同的Netbeans配置/内存选项这一事实表明内存配置也不是问题..?
项目存储在Dropbox文件夹中并在两台机器之间共享,因此我在两台机器上运行完全相同的代码/项目,每种情况下都安装了相同的库。 (我使用dyn4j版本3.1.11和Slick2D构建237与LWJGL 2.9.0)
我在这里找到了一个类似的线程(见下文),这表明可能的问题是图形驱动程序和在每台机器上运行图形测试。我开发了一个图形测试应用程序,用于测试在缓冲区和屏幕之间复制和绘制大图像的不同方法。我的桌面运行速度是笔记本电脑的两倍,这表明图形性能应该没问题。?
How to approach Java 2D performance variations between different computers?
我尝试在netbeans.conf文件中添加“-J -Dsun.java.opengl = true”或作为“运行VM”选项,但没有任何效果。我假设使用Slick2D意味着我正在使用opengl渲染,并且不需要这个选项。
有没有人知道问题可能是什么或我如何进一步探讨这个问题?我的桌面是我的主要开发机器,事实上它不起作用对我来说是一个真正的问题。
答案 0 :(得分:0)
根据我上次的评论,安装新的显卡(华硕GeForce GTX 750 Ti)似乎解决了这个问题。自从使用此卡运行游戏后,我没有遇到任何性能问题,无论是通过Netbeans还是编译的独立版本。