IPPは様々な分野で活用できる関数群を備えているだけでなく、さらにそれらのパフォーマンスが高いというのもポイントだ。例えば表3は先に紹介した、IPPのサンプルコードに含まれている動画エンコーダ(umc_video_enc_con.exe、以下IPPエンコーダ)と、オープンソースのH.264エンコーダである「x264」とで同じ動画をH.264形式でエンコードし、エンコードにかかった時間を比較したものだ。IPPエンコーダとx264とでは設定できるパラメータが微妙に異なるため、細かい部分の設定は完全に同一ではないが、IPPを使ったエンコーダがx264と比べて高いパフォーマンスを出していることが分かる。
| エンコーダ | 1回目 | 2回目 | 3回目 | 平均 |
|---|---|---|---|---|
| IPPエンコーダ | 8.892 | 8.642 | 8.720 | 8.751 |
| x264 | 14.165 | 14.118 | 14.243 | 14.175 |
なお、x264にはVisual Studioのプロジェクトファイルが付属しているので、それをVisual Studioで開き、インテル C++ コンパイラでコンパイルしたものを使用している。コンパイル時のオプションは図2のように設定している。
また、テストに使用したPCのスペックは表4のようなもので、エンコーディング設定は表5のように設定した。下記はx264のコマンドライン、こちらはIPPエンコーダで使用した設定ファイルである。
<h6>表4 テストに使用したPCのスペック</h6> <table class="wikitable" border="1">
<tr><th>項目</th><th>スペック</th></tr> <tr><td>OS</td><td>Windows Vista Businness SP1</td></tr> <tr><td>CPU</td><td>Core 2 Duo E6550(2.33GHz)</td></tr> <tr><td>メモリ</td><td>2048MB</td></tr>
</table> }}}
| パラメータ | 値 |
|---|---|
| 画像サイズ | 1280×720 |
| FPS | 30 |
| エンコードするフレーム数 | 150(約5秒) |
| パス数 | 1 |
| ビットレート | 2kbps |
| QP | 20 |
| GOPサイズ | 250 |
また、CPUをどのように使っているかをWindowsのタスクマネージャで確認したところ、IPPサンプルは2つのコアをほぼ均等に使っていたが(図3)、x264は片方のコアに多く負荷がかかっていた状態であった(図4)。このことからIPPを使ったエンコーダは並列処理の粒度が低く、より効率的に処理を実行できていると言える。