メモ (結局重いのって何? 再生時編)

 ある意味今日の本題。

再生時とかに妙に負荷が掛かるっぽいので、少し検証してみた。



 結論から言うと、

・waveOutUnprepare()( 〜 waveOutPrepare())部分が明らかに重い。

・waveOutWrite()後はwaveOutReset()でもそれなりの負荷が掛かる。

ということのようだ。



 …しかし、この話はコレで終わりではなく、

どうも(特に前者に関しては)ハード周りの依存が多少ありそう。

 waveOutUnprepare()に関しては、

開発用のマシンだとエラく時間が掛かるクセに、テスト用マシン・部室のマシンだと一瞬で返ってきたりする。

(…ただ、検証データがちと古いので再検証が必要かも。)

 後、マシンによっては例外吐いて落ちることがあったんだけど、

これは対策済みだし、今回の件には直接関係ないので、割愛。





 で、どうするか?

単純な話、waveOutUnprepare()の呼び出し回数を減らせばいいわけですね。

というわけで、再生用のバッファ数を減らしてやればいい。*1



 …ただ、これも限度があるわけで、何かある程度以上のバッファ削減では効果が薄いみたい。

それに、バッファ数を減らすということは、

それだけバッファx1の大きさは大きめにしないといけないわけで、

となると、再生命令出してからの遅延とかも気になりそうだな…。





 はてさて、どうしたものか…。




*1:実際問題、SDLのAudio周りもバッファx2でやりくりしてるわけだし。
確かPSPとかもそうだったような?