【问题标题】:Faster: SWT or Java2D?更快:SWT 还是 Java2D?
【发布时间】:2012-02-26 02:11:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: swt java-2d


    【解决方案1】:

    两者都使用平台的图形 API

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

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

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

    图形表示


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

    一些例外情况

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

    • Java Swing 尽可能多地使用纯 Java 代码,这可能会提高性能。
    • 在某些平台上,除了平台的默认设置外,Java2D 还可能使用更好、更快的 API,例如它在 Windows 上支持 Direct3D。
    • 在某些情况下,SWT 所依赖的本机代码可能会比使用 Java2D 抽象更快。

    【讨论】:

      【解决方案2】:

      我的理论是,SWT 应该更快,因为它直接使用原生 UI 实现。

      但实际上,这完全取决于每个平台上的 SWT 和 SWING 实现。

      根据我的经验,SWT 在 Windows 中速度更快,但在 Mac OS X 上并不快。

      【讨论】:

      • 您是否只使用 SWT 控件/小部件?还是你用它来做自定义绘图?
      猜你喜欢
      • 2020-08-14
      • 2010-12-03
      • 2010-12-21
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      相关资源
      最近更新 更多