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:

  1. Durch glib mit der -tcmalloc Option kompilieren.
  2. 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?

War es hilfreich?

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()

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top