「描画関数の時間比較」の編集履歴(バックアップ)一覧はこちら
「描画関数の時間比較」(2011/11/09 (水) 17:09:23) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
各描画系の関数について時間計測を行いました。
計測したのは以下の関数。
-BitBlt
-StretchBlt
-TransparentBlt
-AlphaBlend
-[[TransparentAlphaBlt]]
-[[RotateBlt]]
-[[RotateTransparentAlphaBlt]]
計測ではhdc1に画像を読み込み、それをhdc2に計測対象の関数で描画します。
読み込み時間などは計測の対象に入らず、あくまで関数自体の処理時間を計測します。
また、時間は100回描画した時の平均値で出しています。
関数によってはパラメータを変更したときの速度も計測しています。
画像は[[かえるさん>http://www47.atwiki.jp/frostar?cmd=upload&act=open&pageid=51&file=%E3%81%8B%E3%81%88%E3%82%8B.bmp]]を使いました。透過させるために一部青(RGB(0,0,255))で塗りつぶしてます。
各描画系の関数について時間計測を行いました。
計測したのは以下の関数。
-BitBlt
-StretchBlt
-TransparentBlt
-AlphaBlend
-[[TransparentAlphaBlt]]
-[[RotateBlt]]
-[[RotateTransparentAlphaBlt]]
計測ではhdc1に画像を読み込み、それをhdc2に計測対象の関数で描画します。
読み込み時間などは計測の対象に入らず、あくまで関数自体の処理時間を計測します。
また、時間は100回描画した時の平均値で出しています。
画像は[[かえるさん>http://www47.atwiki.jp/frostar?cmd=upload&act=open&pageid=51&file=%E3%81%8B%E3%81%88%E3%82%8B.bmp]]を使いました。透過させるために一部青(RGB(0,0,255))で塗りつぶしてます。
Transparent系による透過は青(RGB(0,0,255))、半透明合成のアルファ値は128で固定。
BitBlt以外の拡大倍率とRotate系の回転角度は()の中の値です。
結果は以下のようになりました。
BitBlt:0.15
StretchBlt(2倍):3.34
TransparentBlt(等倍):0.20
TransparentBlt(1/2):3.74
AlphaBlend(等倍):0.20
AlphaBlend(1/3):3.08
TransparentAlphaBlt(等倍):0.74
TransparentAlphaBlt(3倍):6.90
RotateBlt(等倍、45度回転):31.06
RotateBlt(等倍、90度回転):28.57
RotateBlt(2倍、45度回転):23.58
RotateTransparentAlphaBlt(等倍、45度回転):33.40
RotateTransparentAlphaBlt(3倍、45度回転):21.89
起動時の状況などにかなり左右されるとは思いますが、RotateBltが他の描画系関数に比べるとかなり遅いことがわかります。
また、TransparentBlt、AlphaBlendは大きささえ変えなければBitBltとそれほど描画時間が変わらないこともわかります。また、拡大縮小の際にもStretchBltとはそれほど速度が変わりませんが、StretchBltではきれいな拡大縮小が行われないようなのでどちらかを使いましょう。
Rotate系で等倍よりも拡大したほうが時間早いのはなんでなんでしょうね?よくわかりません。
表示オプション
横に並べて表示:
変化行の前後のみ表示: