#topicpath
#contents

* ベンチマーク(矩形) [#u264d685]

矩形描画のパフォーマンスを測定します。
- [計測 1]ボタンを押すと、矩形をバッファに描画して、矩形単位で画面に転送します。
- [計測 2]ボタンを押すと、矩形をバッファに描画して、行単位で画面に転送します。

#ref(PixelDrawing-20061113-1.png,nolink)
#ref(PixelDrawing-20061113-1.zip)
- 開発環境: NetBeans

** 部分描画 [#q2fdfff3]

非矩形に拡張することを考慮して、一行ずつ転送するモードを実装しました。予想されたことですが、矩形の場合は圧倒的に不利です。

当初、スキャンラインは行ごとにMemoryImageSourceを生成していましたが、あまりにもパフォーマンスが悪いので、イメージは矩形で作成して一行ずつ転送するようにしました。

 Image img = Toolkit.getDefaultToolkit().createImage(
   new MemoryImageSource(w, h, buf, 0, w));
 switch (drawMode) {
   case DRAW_RECTANGLE: {
     g.drawImage(img, x, y, w, h, null);
     drawCount += w * h;
     break;
   }
   case DRAW_SCANLINE: {
     int xx = x + w;
     for (int i = 0; i < h; i++) {
       int yy = y + i;
       g.drawImage(img, x, yy, xx, yy + 1, 0, i, w, i + 1, null);
       drawCount += w;
     }
     break;
   }
 }

drawCountは転送量を記録しています。ステータスバーの右の数字がそれです。

** コメント [#c26cc767]

#comment(below)
//#comment(below)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS