代码之家  ›  专栏  ›  技术社区  ›  Manuel Salvadores

将tcmalloc与glib一起使用

  •  4
  • Manuel Salvadores  · 技术社区  · 14 年前

    我想测试一下通过使用谷歌的tcmalloc可以获得的性能改进。我的程序是使用glib提供的大量实用程序(散列、列表、数组等)构建的。所以我想要的基本上是让glib使用tcmalloc而不是glibc的malloc。

    我可以用两种方法来解决这个问题:

    1. 通过编译glib -tcmalloc 选项。
    2. 通过使用 g_mem_set_vtable () 来自 glib's memory allocation functions .

    我实际上更喜欢第二个,但是我没有找到任何实现它的例子。

    有什么提示吗?有什么办法吗?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Matt Joiner    14 年前

    你可以使用 LD_PRELOAD method suggested in the tcmalloc documentation .

    或者,在使用任何glib函数之前,使用 dlopen() . dlsym() 这个 malloc() , realloc() free() 例程,并初始化 struct GMemVTable 和他们在一起。(假设tcmalloc calloc() 也很好)。确保初始化不使用的成员 0 (C99命名成员初始化非常适合这一点)。最后一个电话 g_mem_set_vtable()

    推荐文章