VS2010 C# 並列プロファイリングの結果を理解するからの議論を続けますが、さらに要点を説明します。
小さなクラスに多くのメモリ割り当てを使用する (Parallel.For/Each を使用して) 並列で動作するスレッドが多数あります。
これにより、グローバル メモリ アロケータ スレッドで競合が発生します。
各スレッドにメモリ プールを事前に割り当て、このプールからすべての割り当てを行うように .NET に指示する方法はありますか?
現在、私の解決策は、メモリプール(スレッド間でリサイクルされるT型のオブジェクトのグローバルに割り当てられた配列)の独自の実装です。これは多くの助けになりますが、次の理由で効率的ではありません。
- 特定のメモリ スライスから割り当てるように .NET に指示することはできません。
- プールにメモリを割り当てるには、まだnewを何度も呼び出す必要があります。
ありがとう、
ハガイ