Top / PixelDrawing / 2006-11-13-1

ベンチマーク(矩形)

矩形描画のパフォーマンスを測定します。

PixelDrawing-20061113-1.png
filePixelDrawing-20061113-1.zip

部分描画

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

当初、スキャンラインは行ごとに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は転送量を記録しています。ステータスバーの右の数字がそれです。

コメント



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS