2012-07-02 23 views
1

我有問題如何創建高性能的swing組件。來自FIFO緩衝區的高性能條形圖

組件應繪製某種條形圖。組件的數據存儲在分段FIFO緩衝區類中。每次更新緩衝區時都會通知組件。

當組件在每次數據改變時繪製一個BufferedImage。條形圖組件的paintComponent方法然後繪製創建的BufferedImage。

由於在我的應用程序中有很多數據更改的事實,我正在考慮改進BufferedImage的繪製。大部分條形圖保持不變。它只是向右移動,最新的數據更改添加到條形圖的左側。

目前整個BufferedImage是從存儲在緩衝區中的數據中重新創建的。我能想到的是使用AffineTransformation移動舊的BufferedImage,並只添加最近添加的數據。這將極大地減少BufferedImage上繪圖操作的數量。

但我不知道這是否會加快應用程序。 BufferedImage上的AffineTransformation有多昂貴?

歡迎任何言論。還有一些其他提示如何創建一個高性能的swing應用程序。

在此先感謝

+0

您至少需要編輯您的問題以顯示預期的負載和工作週期。 – trashgod

回答

1

沒有某種基線,測量改進非常困難。一開始,您可以使用JFreeChart比較here所示的兩種方法。 10Hz的DynamicTimeSeriesCollection麪包;我沒有仔細檢查另一方,但看起來很靈活。

+0

我已經用JFreeChart玩了一下,但我似乎並不是正確的選擇。該應用程序應該看起來與現有應用程序類似。於是我開始進入JFreeChart並進行調整。但我只需要一個非常簡單的圖表,所以我認爲設計一個自己的組件會更高效,而且更靈活。 – hami

+0

我偶爾會走這條路,但總是返回可擴展性。更改功能和添加新圖表更容易。關於圖表奇怪的事情:沒有人只想要一個。因人而異。我仍然對負載和工作週期感到好奇。 – trashgod