現在、私はマルチスレッド化されたサーバー アプリケーションを大量に使用しており、優れたマルチスレッド メモリ アロケータを探しています。
今のところ、私は以下のどちらかに迷っています:
- 太陽のウメム
- Google の tcmalloc
- Intelのスレッドビルディングブロックアロケータ
- エメリー・バーガーの宝物
私が調べたところ、hoard が最も高速である可能性がありますが、今日まで聞いたことがなかったので、見た目ほど優れているかどうかは疑問です。これらのアロケータを試した経験のある方はいますか?
ベストアンサー1
私は tcmalloc を使用し、Hoard について読みました。どちらも同様の実装を持ち、スレッド/CPU の数に関してほぼ線形のパフォーマンス スケーリングを実現します (それぞれのサイトのグラフによる)。
したがって、パフォーマンスが本当に非常に重要である場合は、パフォーマンス/負荷テストを実施してください。そうでない場合は、サイコロを振って、リストされているものから 1 つを選択します (ターゲット プラットフォームでの使いやすさによって重み付けされます)。
そしてtrshiv のリンク、Hoard、tcmalloc、ptmalloc はいずれも速度に関してはほぼ同等のようです。全体的に見ると、ptmalloc はできるだけ少ないスペースを取るように最適化され、Hoard は速度とメモリ使用量のトレードオフに最適化され、tcmalloc は純粋な速度に最適化されているようです。