(株)アイジュピタ情報ライブラリ

フルカラービットマップからグレースケールビットマップへの変換(4)--処理時間の短縮

前項で描画時間の計測が可能になったので、処理の高速化が図れないかを検証します。
注意点
本節での処理時間計測は、Releaseビルドのデバッグなしで実行しています。

現状の把握
まずは現状のソースファイルですが、以下のようになっているかと思います。

この状態で、1280×1024の画像をグレースケール化すると、(私の環境では)概ね1156ms程度かかります。計測点を、ネストしているfor文の前後に移動しても、さほど違いが見られなかったため、このネストしているfor文の処理時間が短縮できれば、全体の処理速度も速くなるはずです。

記述こそ単純ですが、無駄な計算を何度も行っており、非常に遅いです。これから順にチューンアップしていきます。
まず、インデックスの算出を何度も繰り返しているため、その部分に手を入れます。


これで、400msほど高速化できました。


次に、インデックスのY成分を算出している部分は、Xのループの外に出せますので、修正します。


これで、300msほど高速化できました。


インデックス記述ではなく、ポインタの参照外しに修正します。


若干ではありますが高速化しているようです。


最終的には、以下となりました。


処理速度も、申し分ないレベルです。

0 コメント: