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

2019-09-23 12:50发布

我有一个JavaFX GroupPath节点添加到它,向其中添加我数据大约每秒30次。 这使我的整个GUI成为后约一分钟, 非常 laggy,反应迟钝。 首先,我的路径添加到Group是这样的:

root.getChildren().add(path);

数据添加这样的:

while(true) {
    // Calculate x and y...

    path.getElements().add(new LineTo(x, y));
    path.getElements().add(new MoveTo(x, y));

    // Sleep 33 milliseconds...
}

如果我不路径添加到组,但仍事后添加数据,图形用户界面保持响应,所以性能问题似乎绘制路径的形状,当是。 为什么? 我能做些什么来提高性能? 这是已知发生的还是我做错了什么? 谢谢!

Answer 1:

有一个已知的问题( 创建路径很慢 )在JavaFX的2.1与通路性能和另一个类似的问题的JavaFX 2.2未解决( 改善路径渲染性能 )。 可能还有其他的问题,如果你检查JavaFX的问题跟踪系统 。 对于JavaFX8,这是目前正在开发中,许多元素的性能得到了极大的改善 。

您可以尝试的一种替代的方法是使用一个画布 ,而不是一个路径。 在你的使用情况取决于不过,对于一些使用情况下,这将是一个合适的替代,对别人也不会。

如果你可以创建一个简短的重现测试用例并提交JavaFX的问题吧,JavaFX的团队会调查你看到任何性能问题和潜在的解决他们,如果他们是由底层系统的实现造成的。

您也应该检查实施以下的事情:

  1. 不要叫了JavaFX线程睡眠。
  2. 不要做任何处理器JavaFX的线程上密集。
  3. 不要执行JavaFX的线程阻塞I / O。
  4. 不要将节点数以万计的场景图或路径。
  5. 读取或从另一个线程的场景图写作对象时,使用Platform.runLater 。
  6. 不要叫Platform.runLater过于频繁或你最终将超载的事件处理系统。

不是说你的代码有任何上述问题,就需要检查的事项。



文章来源: JavaFX 2 path drawing performance