2007年09月13日

libjpeg高速化改造版の性能を簡単に評価

「libjpeg高速化改造版の使い方(Visual C++.NET 2003)」の続きです。 libjpeg(以下、通常版)とその高速化改造版の性能をちょっと測ってみましたので、まとめておきます。

性能測定ポイント

最初に、性能を測ったポイントを説明します。
JPEGファイルを読みだしてから画面に表示するまでのステップを以下に示します。

  1. ファイルから読み出す。
  2. libjpegで非圧縮画像イメージに展開する。
  3. WindowsのDIB形式に合うよう、非圧縮画像イメージの色の並びをRed,Green,Blueから、Blue,Green,Redに変更する。
  4. CreateDIBitmapでDDB形式のビットマップを作成します。
  5. BitBltでウィンドウペイント用デバイスコンテキストに描画する。
libjpegを使うステップは2.だけですので、2.だけの性能を測ることにしました。
1.でファイルから読みだしたデータをメモリ上に確保しておいて、 2.ではメモリ上のデータを展開するようにしました。

画像データ

画像データは以下の5つのデータを使うことにしました。私が普段使っている画像データです。

  • test1.jpg(65,349 Byte)、デジカメ撮影データを1024x685まで縮小したデータ。
  • test2.jpg(1,243,981 Byte)、デジカメ撮影データを2128x1424にトリミングしたデータ。
  • test3.jpg(2,434,484 Byte)、デジカメ撮影データを2716x1816にトリミングしたデータ。
  • test4.jpg(3,243,436 Byte)、デジカメ撮影データそのまま(3872x2592)。
  • test5.jpg(4,234,112 Byte)、デジカメ撮影データそのまま(3872x2592)。ファイルサイズ大きめのものをチョイス。
中身はどうでも良いものだとは思いますが、一応ダウンロードできるようにしておきました。

測定環境

測定環境は以下の通りです。

コンパイラVisual C++.NET 2003デフォルトコンパイラ
OSWindows XP Professional SP2
CPUAMD Athlon 64 3700+
メモリ2GB
プロジェクト設定デフォルトRelease構成

測定結果

測定結果は以下の通り。
2.測定結果
処理時間が半分になりました。2倍速です。 劇的というほど速くはなりませんが、地味に効きそうな数字です。 最近はデジカメの高画素化に伴い、巨大なJPEGファイルが増えているので、アプリケーションによっては有効だと思います。

おまけ

ついでにRelease構成とDebug構成も比べて見てみました。
2.測定結果 Debug構成込
通常版を比べてみると、Release版の処理時間はDebug版の4割ほどになってます。2.5倍速です。 コンパイラも結構頑張ってますね。

「libjpeg高速化改造版の性能を簡単に評価 その2」に続きます。

投稿者 MASATO : 2007年09月13日 00:39 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?