4

Googleのtcmallocを使用して得られるパフォーマンスの向上をテストしたいと思います。私のプログラムは、glibが提供する非常に多くのユーティリティ(ハッシュ、リスト、配列など)を使用して構築されています。だから私が欲しいのは基本的にglibがglibcのmallocの代わりにtcmallocを使うようにすることです。

この問題には、次の2つのアプローチで対処できます。

  1. オプションを指定してglibをコンパイルし-tcmallocます。
  2. glibのメモリ割り当て関数g_mem_set_vtable ()から使用する。

私は実際には2番目のものを好みますが、それを実装するための例は見つかりませんでした。

ヒントはありますか?これを行うためのアイデアはありますか?

4

1 に答える 1

4

LD_PRELOADtcmallocのドキュメントで提案されている方法を使用できます。

または、glib関数を使用する前に、を使用してtcmallocライブラリをロードしdlopen()ます。dlsym()malloc()、、、realloc()およびfree()ルーチン、およびそれらを使用して初期化しstruct GMemVTableます。(tcmalloccalloc()が優れていると仮定します)。使用しないメンバーは必ず初期化してください0(C99という名前のメンバーの初期化はこれに最適です)。最後に電話g_mem_set_vtable()

于 2010-11-17T11:54:27.143 に答える