gpt4 book ai didi

performance - 如何提高 JavaFX 图表性能?

转载 作者:行者123 更新时间:2023-12-01 00:54:39 24 4
gpt4 key购买 nike

我想使用 JavaFX 可视化一个包含 10 个系列的静态图表,每个系列都有 10'000 个点。
在我的第一次测试之后,我有点担心 JavaFX 图表 API 的性能,尤其是关于构造函数 new XYChart.Series<>(...)对于 100'000 个数据点,这需要 3 分钟的初始化时间。

如果你不相信我,运行下面的代码:

public static final int SIZE = 100000;

public static void main(String[] args) {
List<XYChart.Data<Integer, Integer>> data = new ArrayList<>(SIZE);

measureTime("creating list", () -> {
for (int i=0; i<SIZE; i++) {
data.add(new XYChart.Data<>(i, i));
}
});

measureTime("creating series", () -> {
new XYChart.Series<>(FXCollections.observableList(data));
});
}

public static void measureTime(String msg, Runnable f) {
long start = System.nanoTime();
f.run();
long end = System.nanoTime();

System.err.println("Time for " + msg + ": " + (end - start) / 1000000 + " ms");
}

这是我电脑上的结果:
Time for creating list: 62 ms
Time for creating series: 173555 ms

为什么这个初始化需要这么长时间,如何解决这个问题?

或者有没有办法在没有 Observables 的情况下使用 JavaFX 图表?

最佳答案

看起来系列创建是一个性能问题,已在 Java 8u25 和 Java 8u40 之间修复。

我在 8u25 上运行您的应用程序并得到以下结果:

Time for creating list: 59 ms 
Time for creating series: 135896 ms

升级到8u40再次运行,得到如下结果:
Time for creating list: 66 ms
Time for creating series: 80 ms

所以,只需更新到 latest Java version你应该很高兴去。

关于performance - 如何提高 JavaFX 图表性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28883009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com