« Theora のデコードをもっと速く その3 | メイン | Theora のデコードをもっと速く その5 »

2007年11月07日

動画再生エンジン開発日誌:: Theora のデコードをもっと速く その4

    

「Windows の CPU 負荷は当てにならない。どうも Windows はプロセス時間をミリ秒単位でカウントしてるらしく、タスクが消費した一回のタイムスライスが 1ミリ秒未満だとカウントされない。」 と言う話を聞く。
何ですと!?
確かに、Core 2 Duo では、mplayer で再生した時 CPU 負荷が 0% をさしていることが多く、ありえないぐらい速いなぁと思っていたのだが、あれはうそだったのか?
と言うことで、もっと負荷の高い動画で試すことにした。
Full HD サイズの theora 動画を作って再生。
mplayer や VLC では絵が止まりまくりでまともに再生できない。
音を止めても、絵がよく止まる。
CPU 負荷は 100% を振り切っているようだ。
対して、自分のはかろうじて再生できている。
音に対応していないので、その辺り気にせずデコードしているせいもあるが、バッファなどが効いているのか遅くなっているのはあまり感じられない。
CPU 負荷も比較するとだいぶ軽い。
なんか雲行きが怪しくなってきた。

今度はPen III M 866MHz のマシンで 640x480 の動画を再生してみた。
やはり、mplayer よりも軽い。
なんと言うか…… CPU 負荷に騙されてがんばっていたのか……
より正確な負荷を調べるすべはないかと探すと、timeit コマンド と言うものがあるようだ。
timeitコマンドでアプリケーションの実行時間を測定する
と言うことでリソースキットを入れて計ってみる。
約105秒の動画を mplayer で再生してみたところ…… Process Time: 0:00:16.203 と出た。
描画をカットして、デコードのみするようして時間を計っていた時、自分のは 8秒を切るぐらいだったのだが。
もしかして、期待できるのか?
ただ、上のは音が入っているので、-nosound オプションをつけて計ってみた。
0:00:14.937 と出た。
1秒ちょっとぐらいが音のデコードに使われているのか。まあ、そんなものかな。
で、自分のでちゃんと描画もするようにして計ってみる。
Process Time: 0:00:09.359 !!
40% ぐらい速い。
過去のと時間を並べてみると……
Process Time: 0:00:14.640 - 156% - 最初のバージョン
Process Time: 0:00:10.843 - 116% - MMX を有効にしたもの
Process Time: 0:00:09.359 - 100% - 今のやつ
パーセントは今のを 100% とした場合の数値。
MMX を有効にした後のからは大して速くなってないなぁ。
まあ、結局なんだかんだで CPU 負荷見て速くなってないなぁと元に戻していたりしたので、1個1個 timeit で計測しながらやると更なるスピードアップが望めるかもしれない。
まあ、それはベータが取れた後かな。
そうすれば、中に手を入れつつ最速のバイナリが作れるかもしれない。

と言うことで、Theora のデコードをもっと速くはいったんここまで。



投稿者 Takenori : 2007年11月07日 17:56




comments powered by Disqus
Total : Today : Yesterday : なかのひと