今日の作業
4:22
昨日のトコのベンチマークページに、いろいろ追加中。
SL-C760でMQBの場合のみ-vf rotateのほうがvo rotateより速いという結果が出てしまった。参った。真面目に最適化しないといかんのか? たぶんやらんだろうなぁ。
6:57
ベンチマーク結果を一通り埋めた。疲れた。
Betaplayerの結果と比べてみると……あれれ?思っていたよりいい勝負のような?(2700G DecoderとATIはハードウェアデコーダドライバなので除く) まぁMPlayerはサウンド無しの結果だけど。サウンドの負荷は20%ってとこかな。
11:20
iWMMXtのローテートblitterをいじる。
ループ内で2ライン同時処理を行なっていたのを、4ラインに変更してみる。速くなるはずだと思ったら……遅くなった。んじゃ1ラインは……? 遅い。たまたま最初から最適な選択をしたようだ。
11:25
そいや、このローテートblitterがSDLやらsnes9xやらの高速化の要。随分前にsnes9xを作業中だとか言ったけど、こいつの実装をするまえに放置してしまった。気が向いたらとりあえずSDLに入れてみようかと。
12:01
MPlayerの心臓ともいえるlibavcodec(FFmpeg)はメモリ確保に独自のav_mallocを使ってる。これはmemalignを使ってメモリを16バイト境界に確保するようになってる。XScaleのキャッシュラインは32バイトなので、以前から32バイト境界に確保するよう変更してみようと思っていた。そうするとPLD(PreLoad)命令も使いやすくなる。
- 16バイト境界アライン:117.72% (XQ Benchmarkページより)
- 32バイト境界アライン:129.06%
わはは。たった2文字のコード変更でここまで速くなるとは!