Java2D / Graphics2D 性能
Posted
技术标签:
【中文标题】Java2D / Graphics2D 性能【英文标题】:Java2D / Graphics2D performance 【发布时间】:2012-05-14 19:57:43 【问题描述】:也许有人在这方面花了很多时间。我正在使用 Java 开发图形可视化库,我刚刚做了一些性能测试。
当我添加由 1000 到 3000 条边连接的大约 2000 个顶点时,它变得非常非常慢。有一些工具做得更好(例如gephi)。他们是怎么做到的? Java2D硬件不是默认加速的吗?我必须使用一些 OpenGL 库吗?
我在 JComponent 中绘制图表,它每隔几毫秒由计时器重绘一次(没关系,如果我给它 100 毫秒或 1 毫秒,它会保持非常慢)。
我的方法有缺陷还是不应该为此使用 Java2D?
感谢您的帮助!
【问题讨论】:
您是否正式分析过您的代码,以便知道渲染是您的瓶颈?如果没有,我会先做这个。 永远不要重绘所有内容。是不可能的。尽可能缓存。 @Hovecraft:我会在星期一回来后尽快完成。 @J-16:当一切都在移动并且可见时,我应该如何缓存一些东西?例如。被力导向布局算法放置/移动 试试看。BufferedImage
不是硬件加速的 afaik,而 VolatileImage
是(如果可用)。
【参考方案1】:
正如 Torious 建议的那样,如果您使用 Java2D 来获得硬件加速的好处,您可能希望使用 VolatileImage。
但是 - 如果您想要绝对的最佳性能,您最好选择基于 OpenGL 的解决方案。
LWJGL (http://lwjgl.org/) 专为游戏而设计,但允许您使用几乎所有相关的 OpenGL 功能,因此也非常适合可视化。可能值得一试!
【讨论】:
以上是关于Java2D / Graphics2D 性能的主要内容,如果未能解决你的问题,请参考以下文章