C/C++ のマルチスレッド メモリ アロケータ 質問する

C/C++ のマルチスレッド メモリ アロケータ 質問する

現在、私はマルチスレッド化されたサーバー アプリケーションを大量に使用しており、優れたマルチスレッド メモリ アロケータを探しています。

今のところ、私は以下のどちらかに迷っています:

  • 太陽のウメム
  • Google の tcmalloc
  • Intelのスレッドビルディングブロックアロケータ
  • エメリー・バーガーの宝物

私が調べたところ、hoard が最も高速である可能性がありますが、今日まで聞いたことがなかったので、見た目ほど優れているかどうかは疑問です。これらのアロケータを試した経験のある方はいますか?

ベストアンサー1

私は tcmalloc を使用し、Hoard について読みました。どちらも同様の実装を持ち、スレッド/CPU の数に関してほぼ線形のパフォーマンス スケーリングを実現します (それぞれのサイトのグラフによる)。

したがって、パフォーマンスが本当に非常に重要である場合は、パフォーマンス/負荷テストを実施してください。そうでない場合は、サイコロを振って、リストされているものから 1 つを選択します (ターゲット プラットフォームでの使いやすさによって重み付けされます)。

そしてtrshiv のリンク、Hoard、tcmalloc、ptmalloc はいずれも速度に関してはほぼ同等のようです。全体的に見ると、ptmalloc はできるだけ少ないスペースを取るように最適化され、Hoard は速度とメモリ使用量のトレードオフに最適化され、tcmalloc は純粋な速度に最適化されているようです。

おすすめ記事