6月
29
ちょこっとだけベンチマークをとった結果を書いときます。エンコードするソースの選定は間違ってるかも知れない(笑)。こういうソースにしろよ、という意見はコメントあたりでお願いします。
まず計測条件。マシン環境は以下の通り。
- CPU
- Intel Core 2 Quad Q6600 @2.4GHz G0ステッピング 定格動作
- マザー
- ASUS P5K (Intel P35 + ICH9DH)
- メモリ
- DDR2-800 1GBx4 (CL 5-5-5-15)
- OS
- Microsoft Windows XP SP3
他のパーツはベンチマークには影響しないはずなので省略。
エンコードする映像ですが、「なぜか」アーマードコア4のOPムービーです。いや、単にリストの先頭にあっただけなんで…
あ、これは私がうpった動画ではないです。
この映像は「基本セピア調」「演出として全体的に強くノイズを乗せている」という特徴があります。後者は上の動画では分かりませんが。
これを Intensity を使って 720p でキャプチャします。ムービー自体は 30fps で作られているようなので AviUtl で 30fps に落として YUY2 で吐きだしたものをソースにします。それ以外の処理(ノイズリダクションとか)は一切やっていません。全部で 5178 フレームになりました。
そしてコーデック一覧
コーデック | バージョン |
---|---|
Ut Video Codec Suite | 4.0.2 |
Huffyuv | 2.1.1 |
Huffyuv_mt | >>712 |
YUY2 Lossless Codec (YLC) | 0.25 |
Lagarith | 1.3.16 |
FastCodec | 1.0beta |
Arithyuv | 1.1.1 |
MSU Lossless Video Codec | 0.6.0 |
注釈
- CorePNG、Luna、LCL も入れようと思ったのですが、テスト中にクラッシュしてしまうので除外しています。Luna と LCL は AviUtl では正常に使えているんですが…
- Lagarith は可逆圧縮スレ私家版がありますが、公式版と速度に違いが見られなかったので公式版の方を使います。
- Toponoky は公式サイトがアクセスできないので除外しています。FastCodec も同じサイトにありますが、以前からインストールしてあるので含めています。
- ソースがプログレッシブかインターレースかを指定できるコーデックに関しては、プログレッシブを指定しています。Huffyuv_mt の場合は、インターレース閾値を 9999 ラインにすることでプログレッシブと判断させています。
- 全てのコーデックに関して、内部保持形式は YUV422 8bit になるように設定します。
で、結果。エンコード/デコード時間に関しては、計測誤差は1%程度あるものと考えてください。(なので小数点以下6桁書いてあるのはまったく意味がない)
コーデック | 設定 | 圧縮比 | エンコード時間 (ms/frame) |
デコード時間 (ms/frame) |
---|---|---|---|---|
Ut Video (ULY2) |
left div1 | 2.79 | 8.426669 | 15.275708 |
left div2 | 2.79 | 4.576193 | 7.836144 | |
left div4 | 2.79 | 2.689822 | 4.074336 | |
left div8 | 2.79 | 2.697791 | 4.065961 | |
median div1 | 3.05 | 8.551017 | 24.033356 | |
median div2 | 3.05 | 4.632559 | 12.272849 | |
median div4 | 3.05 | 2.702032 | 6.321357 | |
median div8 | 3.05 | 2.707380 | 6.285017 | |
Huffyuv | left | 2.41 | 5.260615 | 19.999358 |
gradient | 2.12 | 6.199076 | 20.304600 | |
median | 2.40 | 6.458842 | 31.768252 | |
Huffyuv_mt | left 1t | 2.41 | 5.272316 | 19.999824 |
left 2t | 2.41 | 3.458569 | 10.667671 | |
left 4t | 2.41 | 2.570711 | 6.007526 | |
left 8t | 2.41 | 3.043179 | 6.682861 | |
gradient 1t | 2.38 | 6.011497 | 20.304099 | |
gradient 2t | 2.38 | 4.145986 | 10.831200 | |
gradient 4t | 2.38 | 3.029422 | 6.077456 | |
gradient 8t | 2.38 | 3.518943 | 6.775207 | |
median 1t | 2.67 | 6.295332 | 31.784898 | |
median 2t | 2.67 | 4.024939 | 16.609804 | |
median 4t | 2.67 | 2.882188 | 8.920323 | |
median 8t | 2.67 | 3.398716 | 9.796471 | |
YLC | (設定なし) | 2.99 | 9.867101 | 21.708314 |
Lagarith | st | 3.40 | 33.823276 | 52.389496 |
mt | 3.40 | 18.900243 | 35.259493 | |
FastCodec | (設定なし) | 3.11 | 18.433964 | 43.036491 |
Arithyuv | (設定なし) | 3.06 | 30.782699 | 68.995802 |
MSU | Max speed | 3.89 | 190.081009 | 169.448806 |
結果から読み取れることは、
- 圧縮比を見ると、MSU > Lagarith > FastCodec > Arithyuv > Ut Video > YLC > Huffyuv_mt > Huffyuv の順番。Huffyuv_mt が Huffyuv より成績が良いのは、mt ではプログレッシブとして圧縮することができているからである。Huffyuv 2.2.0 では同じことができるらしいので、その場合は Huffyuv_mt = Huffyuv となるだろう。
- Ut Video と Huffyuv_mt のエンコードを比較すると、シングルスレッドでは Huffyuv_mt の方が速い。しかし、Ut Video の方がマルチスレッド時の処理効率が良いらしく、2、4 と増えると逆転して、4 では Ut Video の方が速い。
- さらに、8 (論理プロセッサ数より多くした場合)では、Ut Video では 4 の場合と比べて計測誤差程度の変化しかないが、Huffyuv_mt では有意に遅くなっている。Ut Video ではあくまでも分割数を指定しているのであり、スレッドは最大でも論理プロセッサ数までしか起動しないが、Huffyuv_mt では指定した数だけスレッドを起動するため、無意味なコンテキストスイッチのオーバーヘッドが無視できないためだと思われる。
- デコード速度だけを見ると、Ut Video の left div4 がテストしたコーデックの中では最も速い。2 スレッドまでに制限しても、やはり Ut Video の left div2 が最も速い。
- Lagarith はマルチスレッド時の処理効率が悪いのか、2倍未満の高速化にとどまっている。2スレッドでしか動かないのか、純粋に処理効率が悪いのかは分からないが、いずれにせよ残念である。
- MSU は非常に遅いが、圧縮比に関して一線を画す性能を見せている。
もちろん、上記の結果(特に圧縮比)は、このソースに関してのものなので、当然ながらソースが変われば結果が変わります、念のため。
コーデックベンチマーク(HD実写編)
AC4 の OP もないだろうということで、HD ハンディカムで実写風景を撮ってきました。手ぶれすごいですが。
計測条件は前回とほぼ同じです。HD ハンディカムから HDMI 経由でキャプチャした…