我想测试使用 Google 的 tcmalloc 可以获得的性能改进。我的程序是使用 glib 提供的大量实用程序(哈希、列表、数组......)构建的。所以我想要的基本上是让glib使用tcmalloc而不是glibc的malloc。
我可以用两种方法解决这个问题:
- 通过使用
-tcmalloc
选项编译 glib。 - 通过使用
g_mem_set_vtable ()
glib的内存分配函数。
我实际上更喜欢第二个,但我还没有找到任何实现它的例子。
有什么提示吗?这样做有什么想法吗?
我想测试使用 Google 的 tcmalloc 可以获得的性能改进。我的程序是使用 glib 提供的大量实用程序(哈希、列表、数组......)构建的。所以我想要的基本上是让glib使用tcmalloc而不是glibc的malloc。
我可以用两种方法解决这个问题:
-tcmalloc
选项编译 glib。g_mem_set_vtable ()
glib的内存分配函数。我实际上更喜欢第二个,但我还没有找到任何实现它的例子。
有什么提示吗?这样做有什么想法吗?
您可以使用LD_PRELOAD
tcmalloc 文档中建议的方法。
或者,在使用任何 glib 函数之前,使用dlopen()
. dlsym()
、和例程,并用它们初始化malloc()
a 。(假设 tcmalloc也更好)。请务必初始化您不使用的成员(C99 命名成员初始化非常适合此)。最后打电话realloc()
free()
struct GMemVTable
calloc()
0
g_mem_set_vtable()