エンコードベンチマークその1(DivX 6.7.0 Pro)

DivXNetworks, Inc.
http://www.divx.com/divx/

次はエンコードである。まず最初は、DivX 6.7.0の結果を見てみたい。DivXはRelease 6.6.0でまずPenryn用のSSE4.1の動き検索の実験用コードを導入し、ついで6.6.1ではこの実験用コードにSSE2対応を追加した。6.7.0のリリースを見る限り、Codec本体にSSE4対応が加わったという話はないようで、あくまでこの実験用コードがSSE4.1対応という事らしい。これはDivXのCodec設定画面(Photo12)を見ても明らかである。

Photo12:ちなみにEnhanced Multithreadは常に有効にした。

SSE4.1の、特にエンコードに関するインプリメントはこちらこちらにまとめたが、まずはこの4割という性能改善が本当に実感できるかがここでのテーマである。

今回はそんなわけで、ちょっと普段と方法を変えてテストした。ソースには720×480pixel、24fpsのDVI AVIファイルを用意し、これを、

Profile:Home Theater Profile
Encoding Preset:10(Maximum Quality)

という条件で、

(1) Bitrate:780Kbps 2-pass
(2) Bitrate:500Kbps 1-pass 実験用SSEフルサーチ:使用不可
(3) Bitrate:500Kbps 1-pass 実験用SSEフルサーチ:SSE2を使用可能
(4) Bitrate:500Kbps 1-pass 実験用SSEフルサーチ:SSE4を使用可能

の4パターンでエンコードを行ってみた。

結果は? というと、グラフ23に示す通りだ。まずエンコード条件を一番重くすると、Kentsfield/Yorkfieldでも殆ど差が無い。合計所要時間で言えば、Yorkfieldが8分47秒、Kentsfieldが9分12秒だから多少は高速化されるが、フレームレートでは殆ど差が無いレベルである。で、問題の実験用フルサーチである。これはそもそも「SSE4.1そのものを試すための実験」であって、DivXにSSE4を取り込むための実験とは言いにくいところがある。大体、今更フルサーチもないだろうという話はIDF北京のレポートでも触れたとおりだ。結果として(2)~(4)は、

(2) - DivX独自のサーチアルゴリズムを利用
(3) - SSE2を使って総当り
(4) - SSE4.1を使って総当り

ということになる。これは結果にも反映されており、やっぱり総当りなんぞしない方がはるかに高速な訳である。で、問題のSSE4の高速性だが、KentsfieldでSSE2を使った場合とYorkfieldでSSE4.1を使った場合の性能差は56.5fps:71.6fpsだから、26%ほど高速ということになる。4割は無理にしても、SSE4.1で高速化できるという話は「嘘ではない」。次の問題は、ではフルサーチをわざわざ行う意味があるのか? という話だが、これは出力画像の比較を含めてもう少し深く検討する必要がある。とりあえず今回は、SSE4の性能向上は嘘ではないが、効果があるかどうかはまだ不明。とりあえずKentsfield→Kentsfieldでは、それなりに性能向上がある「場合もある」程度だろう。