1

パフォーマンスの高いスイングコンポーネントを作成する方法について質問があります。

コンポーネントは、ある種の棒グラフを描画する必要があります。コンポーネントのデータは、個別のFIFOバッファクラスに格納されます。バッファが更新されるたびに、コンポーネントに通知されます。

現時点では、コンポーネントはデータが変更されるたびにBufferedImageを描画します。次に、棒グラフコンポーネントのpaintComponentメソッドは、作成されたBufferedImageを描画します。

私のアプリケーションには多くのデータ変更があるという事実のために、私はBufferedImageのペイントを改善することを考えています。棒グラフのほとんどは同じままです。右にシフトされ、最新のデータ変更が棒グラフの左側に追加されます。

現時点では、BufferedImage全体がバッファに保存されているデータから再作成されます。私が考えることができるのは、AffineTransformationを使用して古いBufferedImageをシフトし、最近追加されたデータのみを追加することです。これにより、BufferedImageでの描画操作の量が大幅に減少します。

しかし、これでアプリケーションが高速化されるかどうかはわかりません。BufferedImageのAffineTransformationはどれくらいの費用がかかりますか?

どんな発言でも大歓迎です。また、パフォーマンスの高いスイングアプリケーションを作成する方法に関するその他のヒントもあります。

前もって感謝します

4

1 に答える 1

1

ある種のベースラインがなければ、改善を測定することは非常に困難です。最初に、を使用してここに示されている2つのアプローチを比較できますJFreeChartDynamicTimeSeriesCollection10Hzのローフ。もう一方については詳しく調べていませんが、柔軟性があるように見えます。

于 2012-07-02T15:09:06.247 に答える