gpt4 book ai didi

java - 什么时候 Graphics2D.fill() 可以在 SWT 中慢 10 倍?

转载 作者:搜寻专家 更新时间:2023-11-01 03:52:17 25 4
gpt4 key购买 nike

我正在调查这个问题,当 Piccolo2D 图形在 SWT 桥内时工作得更慢。

最后我发现,运行速度慢得多的代码是对 Graphics2D.fill() 的调用方法。在 SWT 桥的情况下,它的工作速度比普通 Swing 慢 10 倍。

可能的原因是裁剪区域。

还有哪些可能的原因?

怎么可能看出原因是裁剪? Graphics2D.getClipBounds() 的结果在这两种情况下是相同的,但它被记录为“用户”剪辑区域。是否可以看到“设备”裁剪区域?

最佳答案

SWT 变得比 Swing 慢,因为它使用操作系统小部件的代理。问题是操作系统部分(非托管代码)经常与 Java 代码(托管代码)通信。这种“转换”(托管到非托管和相反)很慢,因为 JVM 必须在系统上设置标志以说明程序是否可以访问什么(内存,...)。

而 Swing 主要停留在“托管代码”部分,因此可以从 JIT 优化等方面受益。

另一方面,SWT 小部件给人一种更好的感觉,因为操作系统管理绘图、悬停状态等,即使 Java 代码有点滞后。

我想,Piccolo2D 使用轻量级 widget,因此不具备 SWT 的任何优势:-(

关于java - 什么时候 Graphics2D.fill() 可以在 SWT 中慢 10 倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com