如何处理不同计算机之间的Java 2D性能变化?

我一直在Windows上用Java设计一款纸牌游戏。 它在我的笔记本电脑和其他一些系统上运行得非常好,但在许多其他系统(甚至是Mac和Windows上的一些新系统)上,动画速度非常慢。

我发现Java用户界面工具包是迄今为止最好的资源,但未能取得重大改进。 我正在使用AWT / Swing库。

题:
看看我的游戏 ,(<1.5Mb),在某些计算机(类似规格)上,性能似乎远远低于笔记本电脑上的性能? 整个应用程序是事件驱动的,我已经完成了大部分优化,我认为在实现的情况下可以完成。

我感觉它与记忆有关。 我创建(兼容),然后在开始时将我的所有图像存储到一个数组中,然后在那里引用它们。

注意:我决定制作这个游戏,以便我可以学习和练习一些新的想法,所以我不只是想分享它 – 我真的很想知道这里发生了什么。

在并非所有操作系统上,Java 2D渲染管道都支持GPU的硬件加速。 这取决于您正在使用的Java实现。

Oracle Java SE 7实现的新function之一(将于本月底发布)是: Java 2D的XRender管道,这意味着它将在Linux上具有更好的2D图形。

对于Windows,在Java SE 6 update 10中,通过使用Direct3D硬件加速( 源 ),使Java 2D的性能得到了一些改进。

对于Mac,您应该尝试本文档中描述的系统propeties和渲染提示,特别是告诉Java使用原生Quartz渲染器而不是Sun渲染器的提示。

..为什么在某些电脑上的性能似乎至少是笔记本电脑的一半?

video驱动程序 很久以前,我参与了usenet上的一个主题,在类似规格的机器上渲染速度有惊人的差异。 最终得出的结论是,有些机器使用过时的video驱动程序,这就是差异的根本原因。

如果事实certificate是这种情况,那么最好的办法就是进行渲染测试。 检查FPS,如果它太低,建议用户更新驱动程序。

尝试在分析器中弹出它,看看会出现什么。 我会在Windows和Mac上都这样做,并比较你在哪里得到问题。 JProfiler是我最喜欢的,但是YourKit也很好。 您可以获得30天的试用版本,这应该是充足的时间来解决这个问题。

它可能与图形硬件相关,硬件加速与软件相比,因为在这个线程上注意到Mac和Windows之间存在这样的差异。