#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)