JavaFX的2绘图性能(JavaFX 2 drawing performance)

2019-06-24 06:19发布

我认为JavaFX的2的绘图性能比那些摇摆的恶化。 我认为,原因之一是你如何画的东西,比如画线时,人们必须创建一个行对象的每一行,并把它添加到一些容器,而在Swing一个刚刚得到的Graphics2D一次,然后做的drawLine,而无需创建每一次新的对象。 那么,有没有使用JavaFX 2得出任何更好的性能的方法,例如,如果你要画约3000弧? 什么是最好的“绘图面”? 目前我使用的是组 。 感谢您的任何提示!

Answer 1:

您当前使用一组的方式,可能是罚款,你可能会发现你的组内拉弧3000的性能是您的应用程序的用户完全可以接受的。

目前可以代替使用组是使用布局窗格这将增加一些方便的功能,但增加开销额外的一层,当你有几千轻松手动布局对象的哪些是不必要的。

见JavaFX的邮件列表归档为即将到来的直接绘制界面(叫做帆布节点)为JavaFX 2.2的讨论和它的影响。

虽然它可能看起来不那么高性能贴在容器中的对象,容器实现可以,如果愿意,利用内置到现代GPU加速保留模式渲染硬件。 还要注意的是,JavaFX的架构内部跟踪肮脏的地方,并且缓存昂贵的渲染操作的结果,以提高性能。 因此,使用的容器不,在本身,意味着比可能依赖即时模式实现的直接平局接口性能下降。

选择一个绘图表面将取决于应用。 对于大多数的JavaFX应用程序的最佳表面将是场景图的节点集合,而不是一个帆布节点。 使用在场景图而不是单一的画布节点许多节点将(通常)是更容易开发和性能将是完全可接受的。

最终,很可能是众多博客文章将被写入比较Canvas的性能VS许多场景图的对象,也许对其他框架,如HTML画布,Java2D的,秋千等,所以在时间上,它会更容易回答这样一个问题。

有关

奥斯瓦尔多的JavaFX的性能分析 ,虽然老了,还包括一些在你的问题中提出的事宜进行深入探讨。

有一个不错的部分性能提示和技巧在的OpenJFX维基 。

有一些相关的StackOverflow JavaFX的性能问题:

  • JavaFX的2路绘图性能
  • 什么是Java中显示百万张图片的最佳方式?


Answer 2:

在JavaFX 2.2类似于对象HTML5 Canvas计划将增加,这将非常适合你需要借鉴了很多primitevs的。

见文档附加到下一期的详细信息: http://javafx-jira.kenai.com/browse/RT-17407



Answer 3:

看的像素图形的提示后实验。 存在其中在第一一个方法2 Group被使用和ImageView中的另一个。 虽然没有尝试自己的作者说ImageView方法更快速,具有更好的可视化。 在另一方面,它使用过时的API方法。



文章来源: JavaFX 2 drawing performance