我的任务是改进使用 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/