いくつかのグラフを同時にプロットしようとしています。それぞれが属性を表し、それぞれが独自のデータ項目シリーズを含むいくつかのオブジェクトの結果を表示します。TimeSeriesのadd(...)またはaddOrUpdate(...)メソッドを使用すると、パフォーマンスが非常に悪くなります。最大16,000アイテムをプロットする時間は約60秒です。パフォーマンスの問題について読みました-http://www.jfree.org/phpBB2/viewtopic.php?t =12130&start=0-しかし、私の場合、何らかの理由でそれがはるかに悪いように思えます。
- これが本当にモジュールから絞り出せるパフォーマンスであるかどうかを理解したいと思います(Windowsを実行している2.5GHzマシン-私はそれを疑っています)。
- この点でアプリケーションを高速化するにはどうすればよいですか?
コードの基本バージョンは次のとおりです(すべて専用スレッドで実行されることに注意してください)。
/* 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
}
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);
}
}
}
}
どうもありがとう !
男