メモ (結局重いのって何? 再生時編)
ある意味今日の本題。
再生時とかに妙に負荷が掛かるっぽいので、少し検証してみた。
結論から言うと、
・waveOutUnprepare()( 〜 waveOutPrepare())部分が明らかに重い。
・waveOutWrite()後はwaveOutReset()でもそれなりの負荷が掛かる。
ということのようだ。
…しかし、この話はコレで終わりではなく、
どうも(特に前者に関しては)ハード周りの依存が多少ありそう。
waveOutUnprepare()に関しては、
開発用のマシンだとエラく時間が掛かるクセに、テスト用マシン・部室のマシンだと一瞬で返ってきたりする。
(…ただ、検証データがちと古いので再検証が必要かも。)
後、マシンによっては例外吐いて落ちることがあったんだけど、
これは対策済みだし、今回の件には直接関係ないので、割愛。
で、どうするか?
単純な話、waveOutUnprepare()の呼び出し回数を減らせばいいわけですね。
というわけで、再生用のバッファ数を減らしてやればいい。*1
…ただ、これも限度があるわけで、何かある程度以上のバッファ削減では効果が薄いみたい。
それに、バッファ数を減らすということは、
それだけバッファx1の大きさは大きめにしないといけないわけで、
となると、再生命令出してからの遅延とかも気になりそうだな…。
はてさて、どうしたものか…。