首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFreeChart性能

JFreeChart性能
EN

Stack Overflow用户
提问于 2012-12-20 15:23:56
回答 1查看 1.5K关注 0票数 1

我试图同时绘制一些图:每个图表示一个属性,并显示多个对象的结果,每个对象都包含自己的数据项系列。我在使用add(.)时遇到了非常糟糕的性能或addOrUpdate(.)TimeSeries方法-绘制16,000项的时间约为60秒.我读过关于性能问题的文章-- http://www.jfree.org/phpBB2/viewtopic.php?t=12130&start=0 --但在我看来,由于某种原因,它在我的情况下要糟糕得多。

  1. 我想了解这是否真的是我可以挤出模块(2.5GHz机器运行windows -我怀疑这一点)的性能。
  2. 如何在这方面加速我的申请?

下面是代码的基本版本(请注意,这些代码都是在一个专用线程中完成的):

代码语言:javascript
复制
/* attribute -> (Object -> graph values) */
protected HashMap<String,HashMap<Object,Vector<TimeSeriesDataItem>>> m_data = 
  new HashMap<String,HashMap<Object,Vector<TimeSeriesDataItem>>>();

public void loadGraph() {
    int items = 0;
    for (String attr : m_data.keySet()) 
        for (Object obj : m_data.get(attr).keySet())
            for (TimeSeriesDataItem dataItem : m_data.get(attr).get(obj))
                items++;
    long before = System.currentTimeMillis();

    // plot each graph
    for (String attr : m_data.keySet()) {  
        GraphXYPlot plot = m_plots.get(attr);
        plot.addToObservation(m_data.get(attr));
    }

    System.err.printf("Time for plotting %d items is:  %d ms", items, System.currentTimeMillis()-before);
    // => Time for plotting 16540 items is:  59910 ms
}
代码语言:javascript
复制
public void addToObservation(HashMap<Object, Vector<TimeSeriesDataItem>> plotData) {
    for (Object obj : plotData.keySet()) {
        SeriesHandler handler = m_series.get(obj);
        if (handler != null) {
            TimeSeries fullSeries = handler.getFullSeries();
            TimeSeries periodSeries = handler.getPeriodseries();
            for (TimeSeriesDataItem dataItem : plotData.get(obj)) {
                fullSeries.add(dataItem);
                periodSeries.add(dataItem);
            }
        }
    }
}

非常感谢!

盖伊

EN

回答 1

Stack Overflow用户

发布于 2012-12-20 18:05:47

如果没有更多的细节,应该考虑以下几种一般的优化:

  • 按照建议的setNotify(false)调用这里
  • 缓存已经计算过的值,如讨论的这里
  • 采用分页策略,如这里所示。
  • 绘制average/time-unit值的汇总图;基于ChartMouseListener中的ChartEntity,显示相邻面板中的扩展子集。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13975312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档