今後は、汎用Waveカッターとして開発を続ける方針に変えることを検討している。
その中で、機能の充実が行われることになるが、その中に音量の正規化を含む。
音量の正規化では、音量のピークを検出して、それを元に何倍にしたらいいのかを決めて処理をする。
その中で、ピーク検出は、どうしても、条件分岐だらけになって、機械語で書いても速度が上がりにくい。
今回は、CPUの行う分岐予測を見越したプログラムを書くことで少しでも高速化した。
分岐予測ミスが発生しにくいプログラムにすることで、実行すべき命令数は増えたものの、速度が数%上昇した(北森で実験したとき)。
また、この処理は並列処理が比較的やりやすいので、後でマルチスレッドに対応することも検討している。
今度のバージョンでは出力サイズを節約するために、音質を落とす機能が追加されるが、ここでの速度の問題は、場合によってはメモリバンドがボトルネックになるかもしれない。特に、PentiumIIIなどのFSBが遅いCPUや、モバイル用Core2Duoなどの、高い倍率を持ったマルチコアCPUでその問題が顕著になるかもしれない。
ここは、プログラムの実装を工夫してL2キャッシュを有効利用する方法が有効だが、最適化には時間がかかるだろう。
また、データをいくつかに分けて同時に実行するということで、HTテクノロジでは速度の向上があまり見込めないということがある。それどころか、場合によってはかえって遅くなるかもしれない。まあ、実行スレッド数は手動で変えられるようにすればいいか。
といっても、どう考えても、音量正規化のためのピーク検出以外はHDDがボトルネックなわけで、ピーク検出だけをマルチスレッドにして、他は、パイプライン化して、HDDに書き込むのと同時に次のデータを処理するという形で作業すれは処理速度は十分だろう。

0