Performance 是什么让JavaFX1.2场景图刷新?

Performance 是什么让JavaFX1.2场景图刷新?,performance,scalability,javafx,paint,scenegraph,Performance,Scalability,Javafx,Paint,Scenegraph,我的第一个问题=)。我正在用JavaFx编写一个带有用户界面的视频游戏。行为是正确的,但我有性能问题。我正试图弄清楚如何弄清楚是什么在排队等待刷新,这会减慢应用程序的速度 我有一个相对复杂的场景图,它代表一个六边形地图。它的比例可以让你在地图上有100或1000个六边形。随着六边形数量的增加,gui的响应性降低。我已经使用YourKit(Java探查器)跟踪这些延迟到主要的重画操作 我花了一整晚的时间试图弄明白如何做两件事,并理解一件事: 1) 使CustomNode在绘制时将某些内容打印到控制

我的第一个问题=)。我正在用JavaFx编写一个带有用户界面的视频游戏。行为是正确的,但我有性能问题。我正试图弄清楚如何弄清楚是什么在排队等待刷新,这会减慢应用程序的速度

我有一个相对复杂的场景图,它代表一个六边形地图。它的比例可以让你在地图上有100或1000个六边形。随着六边形数量的增加,gui的响应性降低。我已经使用YourKit(Java探查器)跟踪这些延迟到主要的重画操作

我花了一整晚的时间试图弄明白如何做两件事,并理解一件事:

1) 使CustomNode在绘制时将某些内容打印到控制台。这将有助于我准确地确定这些油漆的排队时间

2) 标识何时将CustomNode置于重新绘制队列中


如果我回答1和2,我可能能够找出将所有这些不同节点绑定在一起的原因。JavaFX是否可能只通过全局刷新工作(值得怀疑)?

JavaFX脚本是一种功能强大的UI语言,但某些做法会降低性能。最佳性能通常归结为:

  • 使场景图保持较小

  • 将绑定的使用保持在最低限度(您可以考虑改用性能更高的触发器)

吉姆·韦弗的这篇文章扩展了这些观点


我不确定你问题的具体答案。如果您检查1.2.1文档,您可能会在节点文档中找到一个点,您可以覆盖并添加println语句,但我不确定它是否可以完成。你可以试着在

上发帖这是一篇局部文章。我希望在我做了更多的工作后再扩展它。我想把我迄今为止所做的事情写进去,这样我就不会忘记

我意识到我需要充分利用JavaFX1.2源代码来运行IDE。这将允许我在核心代码中添加断点,以了解发生了什么。我决定在Eclipse上为进行此配置。我正在用Netbeans开发我的FX,但是我对Eclipse更为满意,所以如果可以的话,我想调试一下

为了在Eclipse中获得这些信息,我首先用我的代码使用的Java源代码创建了一个项目。然后,我将外部jar添加到项目中。在我的Mac上,我链接到的JAR位于/Library/Frameworks/JavaFX.framework/Versions/1.2中

然后我去寻找链接到这些罐子的源代码。不幸的是,它不可用。我可以在/Library/Frameworks/JavaFX.framework/Versions/1.2/src.zip中找到一些


我做了一些研究,发现剩下的唯一可用选项是安装Java反编译器。我之所以使用这一版本,是因为它很容易安装到Eclipse3.4中:http-colon//java-dot-decompiler _-dot-free.fr/(您可能想阅读本文


基本上,在scenegraph中的插入速度很慢,通过成批插入可以看到好处。Hi Mash谢谢你的建议。我已经阅读了那篇文章,认为我理解了它。问题是这篇文章没有提供任何分析方法来找出造成延迟的具体原因。我做了一些分析,并且相信这一点我的代码中的大部分计算时间都花在JSGPanelRepainer.Repaintal()上。问题是,我的模型或表示形式都没有改变,因此不需要完全重新绘制。这让我想知道是什么触发了Repaintal()。我只是不知道如何追踪。干杯。@Spina在JFX 1.2中,重画经常发生,即使是不必要的。1.3应该有更好的性能,只有在绝对必要时才有选择地重画。艾米·福勒在本演示文稿中指出()这正是问题所在。谢谢Steven!我以前没有遇到过fxexperience.com。这是一个很好的资源,这篇文章肯定很有启发性。我一直在做一些猜测和检查优化并放置缓存:在我的一些组件中,我已经从每秒7帧的100个六边形的贴图变为每秒13帧的贴图。速度仍然太慢,但越来越好呃。由于所有100个都不同时出现在屏幕上,我正在考虑某种动态添加/删除,因此只有可见的部分出现在场景图中。新的场景图(Prism)应该在今年晚些时候(11月/12月?)出现,这显然保证了性能的显著提高。