используя tcmalloc с glib - PullRequest
4 голосов
/ 17 ноября 2010

Я хочу проверить улучшение производительности, которое можно получить с помощью Google tcmalloc.Моя программа построена с использованием довольно большого количества утилит, предоставляемых glib (хэши, списки, массивы, ...).Так что я хочу в основном заставить glib использовать tcmalloc вместо malloc glibc.

Я мог бы решить эту проблему двумя способами:

  1. Путем компиляции glib с опцией -tcmalloc.
  2. с помощью g_mem_set_vtable () из функций выделения памяти glib .

На самом деле я предпочитаю второй, но я не нашел примеров для его реализации..

Есть намеки?Есть идеи для этого?

1 Ответ

3 голосов
/ 17 ноября 2010

Вы можете использовать метод LD_PRELOAD, предложенный в документации по tcmalloc .

В качестве альтернативы, перед использованием любых функций glib загрузите библиотеку tcmalloc с помощью dlopen().dlsym() подпрограмм malloc(), realloc() и free() и инициализируйте с ними struct GMemVTable.(Предполагая, что tcmalloc calloc() лучше, это тоже).Обязательно инициализируйте элементы, которые вы не используете, на 0 (инициализация именованного элемента C99 отлично подходит для этого).Наконец позвоните g_mem_set_vtable()

...