« AviUtlで地デジの古いアニメを補正してみる思索 & NL-Meansの使い所 | トップページ | AviUtlの「透過性ロゴフィルタプラグイン」 ロゴが消える箇所への対処法 »

2010年2月26日 (金)

Vistaと7でx264のエンコード速度を比較してみる思索

ということでやってみました。

 

【理由】

以前どこかのブログで「Windows7にしたら速くなった」という趣旨の記事を見つけ、実際OSによってエンコードの処理速度に差が出るものなのか気になったため。

 

【条件】

OS

・Windows Vista Home Premium SP2 32bit

・Windows 7 Professional 32bit

CPU

Intel Core i7 920(定格2.66GHzにて使用、HTon)

使用ソフト

AviUtl(99i3)+x264gui(1442release01)

使用ストレージ

・AviUtl本体配置場所=SSD

(INTEL SSDSA2M240G2GC、OSと同ストレージ)

以下テスト時のストレージ情報

Ssd

・動画ファイル読書先=HDD(WESTERN DIGITAL WD10EADS)

以下テスト時のストレージ情報

Hdd

( ゚д゚) 最近デフラグしてなかったからかな…それにしてもHDD酷いw

AviUtl関連設定

・優先度:ノーマル

・使用スレッド:

 設定できるものはすべて8

 x264設定のみ0(自動設定=通常8)

・x264設定:

x264gui内蔵設定:高画質に--level 4.1と--no-mbtreeオプションを追加し、自動フィールドシフトの項目にチェック

・フィルタ設定:

詳細は後述するが、SSE関連や使用スレッド数を選べるものは最も速いと思われるものを選択

 

【検証内容】

上記の条件で、フィルタを(通常かけるであろう範囲内で)必要最小限しかかけないHDアニメと、最も多くかけた(重いマルチコア非対応フィルタ含む)SDアプコンアニメのOP(動きの激しい場面1分30秒程度)とED(動きの少ない場面1分30秒程度)をx264でエンコードし、Windows Vistaと7それぞれの処理速度を比較する。比較にはx264guiのlogを使用。

なお上記条件の他、電源のパフォーマンスや裏処理関連など、AviUtl関連以外の条件も出来うる限り同一にしてある…が、これらは基本OSインストール時に設定を統一したためぶっちゃけあまり覚えていないし、仮に覚えていてもかなり膨大な量になるため、ここでの記載は省略するものとする。

 

【検証用動画とフィルタの詳細】

①HDアニメOP

・『鋼の錬金術師 FULLMETAL ALCHEMIST』第44話のOP

Fullmetal_alchemist_op_r

・フィルタ:

 自動フィールドシフト(プリセット設定:映画/アニメ)

 クロップ

 Lanczos3(1280x720)

②HDアニメED

・『クロスゲーム』第46話のED

Ed_r

・フィルタ:①と同一

③SDアプコンアニメOP

・『はじめの一歩』(1期)第28話のOP

Op_r

・フィルタ:

 自動フィールドシフト(プリセット設定:映画/アニメ)

 透過性ロゴ

 ノイズ除去(時間軸)フィルタ(192-2-30)

 そらかけのシュート潰し(0-2-2)

 クロップ

 Lanczos3(960x720)

 DeDotMT(7-20)

 NL-Means Lite(2-50)

 prefilter for nonlinear sharpen(100)

 nonlinear sharpen(30-0-25-20、チェックはデフォルト)

 WarpSharpMT(110-3-70- -6)

 ※カッコ内は設定(基本上から順に)

④SDアプコンアニメED

・『はじめの一歩』(1期)第28話のED

Ed_r_2

・フィルタ:③と同一

 

【検証結果】

※画像クリックで別ウィンドウに拡大表示されます。

①HDアニメOP

・Vista

Fullmetal_alchemist_op_winvista

・7

Fullmetal_alchemist_op_win7

②HDアニメED

・Vista

Ed_winvista

・7

Ed_win7

③SDアプコンアニメOP

・Vista

Op_winvista

・7

Op_win7

④SDアプコンアニメED

・Vista

Ed_winvista_2

・7

Ed_win7_2

 

fps(1秒間あたりの処理フレーム数)のみでの単純比較となるが、それぞれを書き出すと

①WindowsVista:7.89 > Windows7:7.52 (95.3%)

②WindowsVista:13.14 > Windows7:12.48 (94.9%)

③WindowsVista:3.24 < Windows7:3.33 (102.7%)

④WindowsVista:3.23 < Windows7:3.32 (102.7%)

となり、処理速度に多少なりとも誤差以上の差が出た。

※カッコ内はVistaでの処理速度を100%とした場合の値。

時間の関係もあり、それぞれ1ケースずつしかテストできなかったため信憑性は非常に微妙なところだが、一応規則性が出来ている。どうやら一概に「どちらのOSが速い」とは言えないようだ。

上記をまとめるとするなら、「単純なエンコードだけならVistaの方が速いが、フィルタを使うほど7が優位になってくる」といったところだろうか。ただし動きの激しさによる処理速度の差は、(実用上の範囲に限ればであるが)フィルタをかけるほどに小さくなっている。

 

【考察】

さて、ではどうして上記のような結果になったのか。自分なりに考える上で、それぞれのエンコード時のCPU使用率を見てみることにする。

①HDアニメOP

・Vista

Cpu_fullmetal_alchemist_op_winvista

・7

Cpu_fullmetal_alchemist_op_win7_r

②HDアニメED

・Vista

Cpu_ed_winvista_r

・7

Cpu_ed_win7_r

この2つからわかるのは、明らかにWindows7の方が上下幅が大きいということだ。エンコード中CPU使用率の平均値を見ていると、Vistaの方が常に高い使用率を維持しており、希に100%に張り付くこともあったのに対し、7では100%に張り付くことはまずなく、常に数値が揺れていた。

③SDアプコンアニメOP

・Vista

Cpu_op_winvista_r

・7

Cpu_op_win7_r

④SDアプコンアニメED

・Vista

Cpu_ed_winvista_r_2

・7

Cpu_ed_win7_r_2

次にこの2つだが、こちらは①と②より違いがはっきりと出ている。③④共に共通しており、Vistaでは多少の揺れこそあれ、どのコアも一定の値(なぜか1コアだけがやたらと高い数値を維持しているが)を示しているのに対し、7では各コアの上下幅が大きいことに加え、右2つのコアに至っては使用率が0%になることすらあった。

これらから推測するに、7はおそらくOSレベルでパフォーマンス<省電力に特化しているため、CPUをほぼフルに使う処理同士の比較ではVistaよりも1つのアプリが発揮するパフォーマンスを抑える傾向にある(極力100%に張り付かないよう、どこかのコアにわざと余裕を持たせている?)が、CPU使用率が低く、シングルコアの方がパフォーマンスを発揮する要素が内包されているアプリでは、HT(Hyper Threading Technology:i7 920は物理4コアに、物理4コアの未使用領域を使用した論理4コアを加えた、論理8コア構成となっている)を使った各コアへの割り振りが最適化され、全体的な処理能力が向上している――ということが考えられる。

Vistaでひとつのコアだけが高い数値を維持していたのは、もしかしたらこのコアにのみマルチコア非対応フィルタの処理が集中していたためかもしれない。

 

【感想】

他にもかなりのパターンを試行錯誤してみなくては正確な結果も理由も出ないだろうが、簡単な思索ながらも比較的明確な違いが出てくれたことは一つの答えに繋がったように感じている。使うパーツや環境にもよるだろうが、とりあえず「Vistaと7でエンコード速度は違うのか」と言う命題に対しての答えは、「確かにOSによりエンコード速度に違いが出る可能性はあるが、必ずしもどちらかが速く、どちらかが遅いというわけではない」ということでいいだろう。大抵の場合ほとんど気になるほどの差にはならないだろうが、これからエンコPCを組むという人は、こうしたことも参考にしてみるといいかもしれない。

 

|

« AviUtlで地デジの古いアニメを補正してみる思索 & NL-Meansの使い所 | トップページ | AviUtlの「透過性ロゴフィルタプラグイン」 ロゴが消える箇所への対処法 »

エンコード関連」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Vistaと7でx264のエンコード速度を比較してみる思索:

« AviUtlで地デジの古いアニメを補正してみる思索 & NL-Meansの使い所 | トップページ | AviUtlの「透過性ロゴフィルタプラグイン」 ロゴが消える箇所への対処法 »