java - 如何提高 SWT 绘图性能?

标签 java performance swt

我的任务是改进使用 SWT 的 GC 绘制图表的股票市场图表软件的性能。图表绘制需要改进,因为图表有时每秒重绘多次,并且消耗大量处理器时间。

谷歌搜索了一下后,我找到了一个 blog entry这表明直接修改 ImageData 对象而不是使用 GC 的方法,有望获得巨大的性能提升。

使用这种技术绘制水平和垂直的直线和正方形很容易,但是当涉及到绘制圆形和其他不规则形状时,就没有简单的方法了。

有谁知道是否有一个库可以在 ImageData 对象上绘制形状,就像 GC 的方法在 Image 对象上做的那样?

另外,有没有人知道另一种提高 SWT 性能的方法?

提前致谢。

最佳答案

衡量您的解决方案的性能。大部分时间花在哪里?猜测是不够的。在 90% 的情况下,你的猜测都是错误的。如果不知道,就无法解决问题。

SWT 本身并不慢。事实上,SWT 只是在相应的 OS 系统调用上绘制的一个非常薄的层。

SWT 的问题之一是它是同步的。为了确保线程问题不会造成问题,有一个全局锁。因此,如果您同时从多个线程进行渲染,这可能会成为一个问题。

或者您可能没有正确缓存颜色和字体等资源。这些创建起来很昂贵。您创建了多少个 GC?你是保留一个还是每帧创建一个新的?

但我只是在这里猜测。除非你能用性能监视器证明“大部分时间花在……”,否则没有办法帮助你。

关于java - 如何提高 SWT 绘图性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6033427/

相关文章:

java - 状态栏,如何使我的线条、椭圆和矩形可见?

mysql - 我应该如何索引这个 MySQL 数据库?

java - 如何在SWT Canvas 上绘制选择框?

java - 复合 SWT 已实例化复合 Material 的复合 Material

java - 无法在 osx 上加载 SWT 库

java - 如何将多线程写入单个文本文件?

java - 从变量引发异常

java - 我如何返回答案?

c++ - 无符号类型按位移位的 RHS 操作数类型

c++ - 在内存中处理一些长 vector 时如何不弄乱缓存?