Java2D/Graphics2D 性能

4
也许有人在这方面花费了时间。我正在开发一个Java图形可视化库,并进行了一些性能测试。当我添加大约2000个由1000-3000条边连接的顶点时,速度变得非常慢。有一些工具做得更好(例如gephi)...他们是如何做到的?Java2D默认是否硬件加速?我需要使用一些OpenGL库吗?我在JComponent内绘制图形,该组件每隔几毫秒就会被计时器重新绘制(无论我给它100毫秒还是1毫秒,速度都非常慢)。我的方法是否有误或者我不应该使用Java2D来实现这个功能?谢谢您的任何帮助!

2
你是否正式地对代码进行了分析,以确保渲染是瓶颈?如果没有,我建议你首先这样做。 - Hovercraft Full Of Eels
3
永远不要重新绘制所有内容,这是不可能的。尽可能地缓存你能缓存的东西。 - J-16 SDiZ
@Hovecraft:我会在周一回来后立即处理这个。 - Dänu
@ J-16:当一切都在移动和可见时,我应该如何缓存某些内容?例如,被力导向布局算法放置/移动的内容。 - Dänu
你正在使用 VolatileImage 吗? - Torious
1
试一下。据我所知,BufferedImage 不是硬件加速的,而 VolatileImage 是(如果可用)。 - Torious
1个回答

0

正如Torious所建议的,如果您正在使用Java2D进行工作并想要获得硬件加速的好处,那么您可能希望使用VolatileImage

然而,如果您想要绝对最佳的性能,那么您可能更适合选择基于OpenGL的解决方案。

LWJGL(http://lwjgl.org/)是专为游戏设计的,但允许您使用几乎所有相关的OpenGL功能,因此也非常适合可视化。值得一试!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接