mit tcmalloc mit glib
-
25-09-2019 - |
Frage
Ich will die Leistungsverbesserung testen, dass ich durch die Verwendung von Google tcmalloc bekommen konnte. Mein Programm ist gebaut mit ziemlich viel des von glib bereitgestellt Dienstprogramme (Hashes, Listen, Arrays, ...). Also, was ich will, ist im Grunde zu machen glib zu verwenden tcmalloc statt glibc malloc.
Ich konnte dieses Problem mit zwei Ansätzen Adresse:
- Durch glib mit der
-tcmalloc
Option kompilieren. - unter Verwendung
g_mem_set_vtable ()
vom Speicherzuweisung der glib Funktionen .
ich eigentlich lieber die zweiten, aber ich habe festgestellt, keine Beispiele für deren Umsetzung.
Für Hinweise? Irgendwelche Ideen, dies zu tun?
Lösung
könnten Sie verwenden die LD_PRELOAD
Methode in der tcmalloc Dokumentation vorgeschlagen.
Alternativ, bevor Sie glib Funktionen verwenden, laden Sie die tcmalloc Bibliothek dlopen()
. dlsym()
der malloc()
, realloc()
und free()
Routinen und initialize a struct GMemVTable
mit ihnen. (Der tcmalloc calloc()
Unter der Annahme, überlegen ist, dass auch). Achten Sie darauf, Mitglieder initialisieren Sie nicht verwenden zu 0
(C99 genannt Memberinitialisierungsliste ist für diese). Schließlich rufen Sie g_mem_set_vtable()