マルチコアの恩恵
iPodやPSP用の動画変換とか良くやるわけですが、前のCPU(Athlon64 3700+だとイマイチだったので今回Core2Quad(Q9550)にしてみたわけで。
しかし、意外とQuadに対応したアプリがあまり無いのが現状。WMEncorderやTMPGEncくらい?
複数起動という技もあるんですが、一杯やるならともかく単一ファイルでは効果ないですし。
とりあえず携帯動画変換君の複数起動方法とかwebで調べてたら、
なんか携帯動画変換君のエンジンであるffmpegがマルチスレッド化できるらしい!?
これは去年くらいから知られてたことらしいけど、個人的にかなり初耳。
こんな具合で、default_settingフォルダ内の設定ファイル内でffmpegのあとに、
-threads n *1
を追加して、保存。setup.exeで新しい設定ファイル読み直すだけ。
200MBほどのXvid, 23.976 fpsの動画を変換するのにかかった時間は、
n=1 6:45
n=2 3:59
n=4 2:45(min:sec)
CPU Core2Quad Q9550@3.6GHz
Codec:H264.
変換プロセス優先度:2
という結果に。
予想してなかったけど、こんなに速いとは。
タスクマネージャー見ても、4に設定した時は、確かに4コアとも70%以上負荷かかっててる感じ。
4スレ化で4倍とはいかないけど大体170%くらい高速化されているみたい。
もうちょい上がるとうれしいけど、とりあえず倍近く速くなるので満足です。
試しにn=8とか設定してみたけどあまり効果無し。
コア数くらいがちょうどいいのかもね。
それよりか、優先度を3のリアルタイムにすると、あと5%ほど向上。
でも、どうやっても全コア100%ロードにはならんね。
ここでさらに複数起動とかすればいいのかな。
ちなみに、ffmpegのマルチスレッド化が可能なコーディックはH264くらいなので、より軽快なXvidとかはダメっぽい。DivXとかはしらん・・・。
まあ、no optionのXvidの方がマルチスレッドのH264よりか速いかもしれませんが、H264の画質とサイズはなかなか捨てがたいので。
あと、PSPは確か?H264しかダメだった気がするので、この場合は問題なし。