タイトルJava Watch on the X》5 _ ハードウエアアクセラレータをチェック(1)-2カテゴリーJava, Java Watch on the X
作成日2002/3/5 19:15:44作成者新居雅行
――――ベンチマークを行ってみた
さて、実際にベンチマークテストを行ってみた。「Swingが高速化される」というときのSwingの範囲が明確ではないため、はずしがあるかもしれないが、その辺りは要検討事項だろう。
テストプログラムは、JFrameのウインドウに、グラフィックスをたくさん表示するということをやってみた。グラフィックスとしては、パッケージのResourcesフォルダにある1つのJPEGファイル(1792×1184ドット、606KB)を、画面上に表示した。

◇テストプログラムの実行例
 

JFrameはnullレイアウトにして、座標をランダムに指定して、画像をたくさん表示するようにしている。1つ1つの画像は、Canvasを拡張したクラスで表示するようにした。その拡張クラスでJPEGファイルの表示を行うという具合であるが、画像の回りに、GraphicsクラスのdrawRectで10回ほどカラーをランダムに変更させて、ちょっとケバい枠を書いてみた。
ただ、ここで、「CanvasはAWTではないか」という話も出てくるだろう。だが、JPEG画像を手軽に表示するにはこの手法が使われるだろうから、まずはこれでチェックをしてみることにする。もし、AWTだとアクセラレーションがかからないのであれば、ベンチマークテスト結果は、プロパティの設定に関わらず変化がないはずである。ベンチマークテストは、ウインドウを表示後、Canvasを拡張したJPEG表示オブジェクトを100個ランダムに追加する時間を測定してみた。「追加」だから、厳密に言えば表示時間ではないのだが、体感と大きく離れた結果ではなかった。

◇テストプログラム
 http://mdonline.jp/figs/02/028/SwingAccelTest.sit

気になるテスト結果だが、「ほとんど効果はない」というところのようだ。実は、測定結果が、毎回大きく変動する。統計処理をしなければならないような変動なのである。数回測定した結果はアクセラレーションの指定があれば約8秒、ない場合には7秒となっているが、どちらの場合も最大と最小が2倍近い開きがあるので、事実上変化はないと考えられる。テストマシンは500MHzのPowerBook G4である。なお、ビルドしたアプリケーションをFinderでダブルクリックし、Consoleアプリケーションに測定結果を出力して、実行時間を測定した。他のアプリケーションは起動しないようにした。他のアプリケーションが起動しているような場合でもチェックしてみたが、その状況によって実行時間の数字自体がかなり増えてくる。
もちろん、これだけの結果ではすべては分からないというのは当然のことだろう。AWTのコンポーネントでは有効ではないということも言えるかもしれないが、アクセラレータを有効にすると、時折Consoleに「speed pen going down, clean up」と表示されるのが確認されるので、今回のベンチマークテストではアクセラレーションの機能はまったく使われなかったとも言えないと考えられる。これが、PowerBookだからということで、別のマシンなら早くなるのであろうか? そのあたりはもちろん不明だが、もし、読者の方で、ベンチマークをしていただけるのであれば、測定結果をお知らせしていただければと思う。

なお、もう少し違うテストもやってみる予定である。

‥‥‥‥‥‥‥この項、続く‥‥‥‥‥‥‥[新居雅行]‥‥‥‥‥‥‥
関連リンク