前回から1年半たっていますが、再びベンチマークです。

計測条件は以下の通りです。ハードウェアは前回と同じです。

CPU
Core i7-2600K (Sandy Bridge, 3.4GHz, 4C8T) と Core i7-4770 (Haswell, 3.4GHz, 4C8T)
メモリ
DDR3-1600 9-9-9-28
映像
crowd_run 4KBig Buck Bunny 4K
計測ツール
vctest 2.2.2 x64

計測対象コーデックは以下の通りです。

前回と比較して以下の違いがあります。

  • UtVideo は T2 が追加された。また、旧来の物(以降、便宜上 UtVideo T1 と書きます)も高速化されている。
  • MagicYUV は RC が取れて正式版になった。
  • AMV4 は内部 YUV420 の物が追加された。
  • Lagarith は対象外とした。

結果

見づらいわ! とりあえず計測したものを全部出しているんですが、もうちょっと要点が見やすいグラフを提示する必要がありますね…

分かること

前回と重複する内容は省略します。

圧縮比
  • UtVideo T2 の圧縮比は(フレーム間圧縮を無効にしている場合は)UtVideo T1 より低くなる。フレーム間圧縮が有効でもフレーム間圧縮が効かない crowd_run の場合でも同様である。
  • UtVideo T2 の圧縮比は AMV4 DR3/DY3 より優れている。より具体的には、フレーム間圧縮が効かないクリップではフレーム間圧縮の設定によらず優れており、フレーム間圧縮が効くクリップではフレーム間圧縮を有効にしたもの同士を比較した場合に優れている。フレーム間圧縮が効くクリップでフレーム間圧縮を無効にしたもの同士を比較した場合はそうではないが、これは Big Buck Bunny においては DR3/DY3 の「二次圧縮」が効きやすいことによるものだと推測される(UtVideo T2 では P フレームにおいてのみ二次圧縮をしている)。
  • UtVideo T1 の圧縮比は MagicYUV よりほんの少しだけ優れている。
速度
  • UtVideo T2 はフレーム間圧縮を有効にすると結構遅くなる。
  • AMV4 はフレーム間圧縮を有効にしても速度はほとんど変わらない。前のフレームを参照する分追加の処理をしているはずだが、この挙動は不思議である。
  • UtVideo T2 と AMV4 DR3/DY3 を比較すると、エンコードでは AVX2 がある場合は AMV4 の方が速く、AVX2 がない場合は UtVideo T2 の方が速い。デコードでは大抵 UtVideo T2 の方が速いが、 AVX2 があると差が縮まる。
  • MagicYUV では、シングルスレッド時の内部 YUV420 のエンコードが、 AVX2 がある場合 (Haswell) の方が AVX2 がない場合 (Sandy Bridge) より何故か遅くなっている。YUV420 以外の場合やデコードの場合ではそのようなことはない。マルチスレッド時はメモリ帯域で律速するためか、やはりそのようなことはない(Haswell の方が Sandy Bridge よりメモリコントローラの性能が良いため、同一のメモリであっても実効帯域が広い)。

感想

相変わらず AMV4 の速度は頭おかしい(何度も言いますがほめてます)わけですが、UtVideo も T2 の投入により圧縮比で上回りつつ速度でもいい線行っていると言っていいと思います。

ところで、 UtVideo は全てのファミリー (T1, T2, Pro) において、一旦 planar format に変換してから処理をしています。内部 YUV422 の時、planar なフォーマット (YV16) の場合に packed なフォーマット (YUY2) と比べて有意に速い結果が出ているのは、その変換に無視できない時間がかかっている& YV16 の場合は元から planar なので変換せずに直接処理しているからです。変換を回避する方法として packed なフォーマットから直接処理するのに適した内部フォーマットを追加するという手が考えられ、そうすると AMV4 より全てのケースで高速になるのではないかと考えています。ただし、その場合は互換性を維持するために2つの内部フォーマットをサポートしたり、外部フォーマットそれぞれに対応する直接処理するための多くのルーチンをメンテナンスしたりする必要があります。そこまで頑張る価値があるのかどうか…

Trackback

no comment untill now

Add your comment now