2

哪个具有更快的图形性能:SWT 还是 Java2D?

在 MacOSX 上,SWT 的图形是否通过 Quartz Extreme,而后者又使用硬件加速的 OpenGL 进行渲染?

我不是指本机 UI 控件,而是询问自定义 2D 图形渲染,如文本、线条、曲线和多边形。

4

2 回答 2

3

两者都使用平台的图形 API

Java Swing 和 SWT 采用相反的方法。

Java Swing 使用 Java2D 来绘制它的小部件和自定义绘图,这是一个跨平台的图形 api,它抽象了底层平台的图形 api。现在 Java2D 的性能取决于平台的 Native API 的性能和效率。

SWT 使用平台的本机图形 API 进行自定义绘图,并使用平台的本机 GUI API(如果存在)来绘制其小部件。现在要注意的一点是,对于大多数平台,GUI API 本身使用平台的图形 API 来绘制小部件。

图示

全部依赖于图形 API


如您所见,最终都依赖于平台的图形 API。因此,两者都提供或多或少相同的性能和速度。

一些例外

有一些例外情况可能会或可能不会影响性能。

  • Java Swing 尽可能多地使用纯 Java 代码,这可能会提高性能。
  • 在某些平台上,除了平台的默认值之外,Java2D 可能会使用更好、更快的 API,例如它在 Windows 上支持 Direct3D。
  • 在某些情况下,SWT 所依赖的本机代码可能会比使用 Java2D 抽象更快。
于 2012-02-25T18:11:10.757 回答
1

我理论上,SWT 应该更快,因为它直接使用本机 UI 实现。

但在实践中,这一切都取决于每个平台上的 SWT 和 SWING 实现。

以我的经验,SWT 在 Windows 上更快,但在 Mac OS X 上并不快。

于 2010-06-18T18:31:47.550 回答