5

我有一个我编写的 java 应用程序,它加载 TTF 字体并使用drawStringGraphics2D 中的方法。每 50 毫秒调用一次,每次都会改变 x 和 y 位置以使文本移动。当我在 Windows 上运行程序时,CPU 使用率为 0-1%,但在 Mac 上我得到大约 75% 的使用率。这台 Windows 机器确实有更好的 CPU,但不可能有那么大的差异。我认为它与硬件加速有关,我想知道如何启用它。我发现了一些Mac 特定的 Java 属性,但它们都没有降低我的 CPU 使用率。任何想法如何提高 OS X 上的 Java 2D 性能?谢谢。

EDIT1:我认为这些属性会有所帮助,但没有。

System.setProperty("sun.java2d.opengl", "true"); System.setProperty("apple.awt.graphics.UseQuartz","true"); System.setProperty("apple.awt.graphics.EnableQ2DX","true");

EDIT2:您可以在此处下载项目源代码和字节码:http: //drop.io/ExampleScreenSaver

EDIT3:由于 drop.io 不再存在,我将项目上传到Google Code。现在您无需下载即可浏览代码。我仍然不知道如何解决这个问题,所以任何帮助将不胜感激。

4

3 回答 3

2

在“jvisualvm”中运行分析器以确定时间的去向。

于 2010-07-03T09:55:48.117 回答
1

Apple JVM 字体处理特定于 MacOS X。例如,如果在当前字体中找不到字符的字形,则 JVM 会寻找另一种字体来显示该字符。此外,默认情况下启用抗锯齿(如果要比较,应检查是否在 Windows 上启用了它)。我对 Apple 的实现使用更多 CPU 并不感到惊讶。

于 2011-05-12T07:53:00.873 回答
0

调用java时可以启用OpenGL,例如

java -Dsun.java2d.opengl=true MyJavaGame

也可以从您的 Java 应用程序内部启用 opengl

System.setProperty("sun.java2d.opengl", "true"); 

不确定这在 iOS / Linux / Android 上的效果如何,可能需要更多研究。

于 2018-03-27T01:17:36.650 回答