x265、速くなった? (2014.11)
x265もだいぶ速くなってきたかな?、というわけで再びテスト。

最近のx265の重要な更新は、
・AVX2最適化
・pmode(とpme)
の追加。
pmodeはCU(ブロック)単位で並列処理して、並列度を上げて、マルチコアCPUをより有効に使う。圧縮率に影響なく(あるいはやや向上させながら)、CPU使用率を引き上げるらしい。なんかすごい。
pmodeとAVX2最適化によって、さらに速度が向上したはずなので、そのあたりがどのくらいのものかを測定。
環境と条件
環境
Win 8.1 x64
Core i7 5960X (8C/16T, L3=20MB)
Core 4.4GHz / Cache 4.0GHz
DDR4-2666, 4ch, 32GB
Aviutl 1.00
lwinput r726
x265guiEx 3.47(仮)
ソース
グリザイアの果実 (アニメ) OP を一度x264 (crf=18) + x264guiEx + afsでエンコードしたもの。
1920x1080p 23.976fps H.264/AVC 2155frames 8483kbps
x265.exe x64 8bit
0.8+3 (2014.03.05)
1.0+4 (2014.05.03)
1.1+88 (2014.06.16)
1.2+45 (2014.07.11)
1.3+18 (2014.08.23)
1.4+3 (2014.11.03)
x265オプション
--preset <medium or slow> --crf 21 --tune ssim --ssim [ --pmode ] [ --asm avx ]
x265の--preset medium と --preset slow それぞれについて試した。あと、1.4+3では--pmodeありとなしでそれぞれ測定。
測定
一発勝負
計測データ
ビットレートとSSIM
まずはpreset mediumの時とslowの時それぞれのビットレートとSSIM。
SSIMは画質のだいたいの目安で値が大きいほうが高画質。
ビットレートとSSIM

preset mediumよりslowのほうが当然SSIMもよく、ビットレートも小さい。
1.0 と 1.1の間に大きな差があって、もう覚えてないけどプリセット自体が変わったんだろうなと思う。あと、--pmodeをつけると、少しSSIMが向上し、ごくわずかに容量が膨らんでいる。
エンコード速度とCPU使用率
次に本題の
・エンコード速度(fps, 棒グラフ, 左軸)
・CPU使用率(%, 折れ線, 右軸)
のグラフ。
まずはpreset mediumについて。AVX2ありとAVXまでの時をそれぞれ測った。
結果 (medium)

バージョンを追うごとに少しづつ速くなっている。特に1.4ではAVX2使用によって明らかに速い(10%弱)。x265 1.4+3のAVX2の速度は24fpsを超えていて、x265は確かに重いけど、5960Xを使えばfullHDの24fpsを等倍でエンコードできるみたい。
--pmodeによってCPU使用率を70%台から80%台へ上がるけど、逆に速度は下がっている(画質は少し上がってるけど)。--pmodeが効果が大きいのは、--rd 3~4で--rectがオンのときということなので、そんなに効率が良くないのかな? (preset mediumでは--rdは3だけど--rectはオフなため)
次にpreset slowについて。AVX2ありとAVXまでの時をそれぞれ測った。
結果 (slow)

プリセットslowも同様にどんどん高速化している。mediumほどではなけど、1.4+3でAVX2が効いているのがわかる(3%程度)。
slowでは、--pmodeによってCPU使用率は大きく上がって、70%台から90%台になった。これによって、pmodeをつけたほうが速くなっている。slowでは--rd 4 --rectなので、pmodeが大きな効果を発揮できるんだろう。
以前速度を測定した時はx265 0.6とかだったので、そのころと比べるとかなり速くなってるし、2passエンコードやpsyが追加されてきて次第に機能面でも整ってきている。
pmodeによりマルチコアをより有効に使えるようになり、AVX2への最適化も進んだ。x265はx264よりも大きブロックサイズを扱うので、AVX2がより効果があるかもしれない。
今後もコードの整理やAVX2最適化によって高速化していくことに期待したい。

最近のx265の重要な更新は、
・AVX2最適化
・pmode(とpme)
の追加。
pmodeはCU(ブロック)単位で並列処理して、並列度を上げて、マルチコアCPUをより有効に使う。圧縮率に影響なく(あるいはやや向上させながら)、CPU使用率を引き上げるらしい。なんかすごい。
pmodeとAVX2最適化によって、さらに速度が向上したはずなので、そのあたりがどのくらいのものかを測定。
環境と条件
環境
Win 8.1 x64
Core i7 5960X (8C/16T, L3=20MB)
Core 4.4GHz / Cache 4.0GHz
DDR4-2666, 4ch, 32GB
Aviutl 1.00
lwinput r726
x265guiEx 3.47(仮)
ソース
グリザイアの果実 (アニメ) OP を一度x264 (crf=18) + x264guiEx + afsでエンコードしたもの。
1920x1080p 23.976fps H.264/AVC 2155frames 8483kbps
x265.exe x64 8bit
0.8+3 (2014.03.05)
1.0+4 (2014.05.03)
1.1+88 (2014.06.16)
1.2+45 (2014.07.11)
1.3+18 (2014.08.23)
1.4+3 (2014.11.03)
x265オプション
--preset <medium or slow> --crf 21 --tune ssim --ssim [ --pmode ] [ --asm avx ]
x265の--preset medium と --preset slow それぞれについて試した。あと、1.4+3では--pmodeありとなしでそれぞれ測定。
測定
一発勝負
計測データ
ビットレートとSSIM
まずはpreset mediumの時とslowの時それぞれのビットレートとSSIM。
SSIMは画質のだいたいの目安で値が大きいほうが高画質。
ビットレートとSSIM

preset mediumよりslowのほうが当然SSIMもよく、ビットレートも小さい。
1.0 と 1.1の間に大きな差があって、もう覚えてないけどプリセット自体が変わったんだろうなと思う。あと、--pmodeをつけると、少しSSIMが向上し、ごくわずかに容量が膨らんでいる。
エンコード速度とCPU使用率
次に本題の
・エンコード速度(fps, 棒グラフ, 左軸)
・CPU使用率(%, 折れ線, 右軸)
のグラフ。
まずはpreset mediumについて。AVX2ありとAVXまでの時をそれぞれ測った。
結果 (medium)

バージョンを追うごとに少しづつ速くなっている。特に1.4ではAVX2使用によって明らかに速い(10%弱)。x265 1.4+3のAVX2の速度は24fpsを超えていて、x265は確かに重いけど、5960Xを使えばfullHDの24fpsを等倍でエンコードできるみたい。
--pmodeによってCPU使用率を70%台から80%台へ上がるけど、逆に速度は下がっている(画質は少し上がってるけど)。--pmodeが効果が大きいのは、--rd 3~4で--rectがオンのときということなので、そんなに効率が良くないのかな? (preset mediumでは--rdは3だけど--rectはオフなため)
次にpreset slowについて。AVX2ありとAVXまでの時をそれぞれ測った。
結果 (slow)

プリセットslowも同様にどんどん高速化している。mediumほどではなけど、1.4+3でAVX2が効いているのがわかる(3%程度)。
slowでは、--pmodeによってCPU使用率は大きく上がって、70%台から90%台になった。これによって、pmodeをつけたほうが速くなっている。slowでは--rd 4 --rectなので、pmodeが大きな効果を発揮できるんだろう。
以前速度を測定した時はx265 0.6とかだったので、そのころと比べるとかなり速くなってるし、2passエンコードやpsyが追加されてきて次第に機能面でも整ってきている。
pmodeによりマルチコアをより有効に使えるようになり、AVX2への最適化も進んだ。x265はx264よりも大きブロックサイズを扱うので、AVX2がより効果があるかもしれない。
今後もコードの整理やAVX2最適化によって高速化していくことに期待したい。
スポンサーサイト