首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Swing性能OSX10.6与Windows 7

Java Swing性能OSX10.6与Windows 7
EN

Stack Overflow用户
提问于 2014-01-01 15:26:53
回答 2查看 965关注 0票数 4

这是我在这个论坛上的第一篇文章,我对Java有大约6个月的经验,也有大约1个月的Java编程(Swing)经验,所以请考虑我是一个Java新手。

我开始开发一个简单的2D射击游戏,把Java作为一个业余项目。我使用的是Java 1.6.0_65与Mac 10.6.8,Macbook Pro 2.4 GHz Intel Core 2 Duo (2010年春季型号),显示卡是NVIDIA GeForce 320米。

在我的绘画方法中,我用Swing drawRect()方法绘制了大约30-50个矩形,大小为32 * 32像素,很少有7*7像素大小,较小的矩形填充了fillRect。我从计时器回调中调用paintComponent()方法50次/秒。

为了了解绘画的速度和速度,我添加了一些度量代码,记录paintComponent()方法的开始和结束时间,并使用System.nanoTime()方法计算平均持续时间。

在OSX10.6上,每个paintComponent()的平均执行时间似乎约为3000 usec。

我也在Windows 7个人电脑上运行相同的代码(索尼Vaio笔记本电脑,AMD双核2.x GHz和惠普笔记本电脑,英特尔四核,2.x GHz,现在不记得所有细节)。在Windows机器中,平均执行时间仅为100 us,即大约快30倍!

有什么能解释这么大的差异呢?System.nanoTime()能在Windows7和OS之间使用不同的分辨率吗?还是在OS中画得那么慢?

另一方面,我还测量了游戏引擎中与GUI无关的部分(物体的移动、碰撞检测等)的平均执行时间,在两个系统上的执行时间都在50-100 us之间,所以也许System.nanoTime()是可靠的,而在OS中绘制真的那么慢吗?

编辑:我无法从xCode和Eclipse复制粘贴任何代码,我一直在抱怨格式化问题,但是您可以查看我编写的一个测试应用程序来说明这个问题,at:http://www.java-gaming.org/topics/swing-performance-os-x-10-6-vs-windows-7/31654/view.html

我在Mac上的性能也很慢,还有这个测试应用程序,大约1400-1800 usec / paint操作。

EN

回答 2

Stack Overflow用户

发布于 2014-01-01 15:30:48

我在Mac上的SWT也有同样的问题。另一个观察是,在Mac上,与Windows不同的是,即使没有双缓冲,也不会有任何闪烁。这可能或不可能表明,性能不佳的根本原因是操作的额外安全性(它们可能会阻塞,直到垂直刷新,以避免闪烁)。

票数 3
EN

Stack Overflow用户

发布于 2015-04-29 10:38:51

基于英特尔图形的Retina显示器在MacOS X上的渲染速度似乎很慢。在这个JDK bug注释中突出显示了这一点。它是JDK 8修补程序40 (8u40)中的已解决

在创建一个2D侧/垂直滚动游戏时,我也遇到了这个问题,并且正在研究Mac上的渲染:

  • 约塞米蒂10.10.3
  • MacBook Pro (Retina Mid,2012年)
  • 处理器2.7Ghz英特尔核心i7
  • Java(TM) SE运行时环境(build 1.6.0_65-b14-466.1-11M4716)

我正在通过标准的JComponent#paintComponent(Graphics)方法执行我的呈现,并使用我自己的滚动双缓冲方法,这样我就可以将准备图像的时间与通过对显示设备调用Graphics#drawImage()来实际绘制图像的时间隔离开来。

如果我使用MBP的内置显示器(Intel HD Graphics 4000)绘制1680x1500图像,则需要30‘s才能完成。

如果我然后切换到外部显示器(NVIDIA GeForce GT 650米),对于相同的代码和相同的图像大小,我得到5ms的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20870102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档