私はマルチスレッドプラグインを開発中です。かなり大きなメモリブロック(> 10 MB)でfree()を実行すると、プラグインを使用したアプリケーションが一時的に遅くなりすぎます。 (そのオーディオアプリ、オーディオスレッドはあまりにも時間がかかります)。 free()が多くのCPUを使用しているか、他のスレッドの処理が長すぎるかどうかは分かりません。 madvice()への呼び出しが多くの作業をしているようです。私はfree()に多大な時間を要しています(32ビットモードで動作していないとき)。free()他のスレッドをブロックし、システムの減速
いくつかの情報: OSX &プログラムをプラグイン10.8 64ビットが C++
継続する方法上の任意の提案は非常に歓迎されています。
おそらく、デバッグの目的でメモリが消去されるため、空き時間がかかる可能性があります。 –
プログラムをインストルメントできますか?OS Xでは楽器を使用するのがとても簡単です。それはあなたのプログラムが大部分の時間を費やしているところを教えてくれるでしょう。 – parry
リアルタイムの優先度の高いオーディオコールバックスレッドでは、メモリの割り当てや割り当て解除は避けてください。 [テクニカルQ&A QA1467:CoreAudioのオーバーロードに関する警告](https://developer.apple.com/library/mac/qa/qa1467/_index.html)の推奨事項を参照してください。 mallocの実装では、スレッドの安全性を確保するためにロックが必要です。 –