動画の変換用として、久しぶりに新しくPCを組んでみた。新しくつっても買ったのはCPUとマザボだけで、ケースとかメモリとかHDDは全部使いまわしなんだけど。

自分は貧乏性もい〜とこなんで、これまでPCを組むときはいつも型落ちの安物でセコく組むと相場が決まってた。CPUも売値でせいぜい1〜2万程度のものを選ぶのが普通だったのだが、まぁ先月にボーナスも出たことだし、たまにはちっと張り込んでみることにした。

んで選んだのがAthlon64 X2 3800+。いわゆるデュアルコアな奴で、値段は4万弱。まぁAthlonデュアルコアな奴の中では一番安いのを選ぶあたりはまだまだ貧乏性が出てるが(^^;)。で、さくっと組んでMPG2AVIの変換を試してみたのだが、いやはや速い速い。今までが安物だったせいもあるけど、DivXの2パス変換・最高画質でも、ソースの実時間の2〜3割増程度で変換してくれた。いやはや、さすがに最新CPUなだけはあるなぁ(^^)。

ただ、やはりデュアルコアだとCPUパワーを使い尽くせないのが少々悔しい。MPG2AVIの処理は一応マルチスレッドにはなってるけど、メインで動くスレッドに大部分の処理が集中しているため、マルチCPU環境での負荷分散はあまり効かないのだ。CPU使用率は平均で70%あたりで、50%よりは上にいるから、一応恩恵は受けてることになる。でも、もっと並列度を上げればさらなる高速化が期待できるわけだな。

ちなみにMPG2AVIの内部スレッドは、大きくわけて「①GUI部」「②動画入力部」「③映像・音声変換、映像圧縮部」「④音声圧縮部」の4つに分かれている。GUIを除く各部がパイプライン的にデータをやり取りするのだが、このうち③のところが一番メインの処理で負荷が大きいのだ。ここをさらに分解すれば並列度はアップするんだが、分割するってことはスレッド間のやり取りの層が増えることにもなるから、うまくやらないと遅くなってしまうことになる。しかも、シングルCPU環境では分割されても何の恩恵もないし・・・。

まぁCPU能力を使い尽くすだけなら、MPG2AVIを2つ起動して、同時に変換処理を行わせるって手はあるんだけどね。多数の動画ファイルを変換する場合であれば、2つのMPG2AVIに同じプロジェクトを設定して、動作設定で「既存ファイルをスキップする」にしておけば、重複なく連続変換していくし。

しかしやっぱ、単体でパフォーマンスを生かしきれないってのは悔しいし、うまい並列度アップの方法を考えてみようかなぁ。