Pregunta

Quiero probar la mejora del rendimiento que podría conseguir mediante el uso de tcmalloc de Google. Mi programa está construido con un buen montón de las utilidades proporcionadas por simplista (hashes, listas, matrices, ...). Así que lo que quiero es básicamente para hacer uso simplista a tcmalloc en lugar de malloc de glibc.

Me podría abordar esta cuestión con dos enfoques:

  1. Al compilar simplista con la opción -tcmalloc.
  2. utilizando g_mem_set_vtable () de la funciones de asignación de memoria de simplistas .

En realidad, prefiero la segunda, pero no he encontrado ningún ejemplo de su aplicación.

¿Alguna pista? ¿Alguna idea para hacer esto?

¿Fue útil?

Solución

Se puede utilizar el método de href="http://goog-perftools.sourceforge.net/doc/tcmalloc.html" rel="nofollow"> LD_PRELOAD .

Alternativamente, antes de usar cualquier funciones simplistas, cargar la biblioteca tcmalloc usando dlopen(). dlsym() la malloc(), realloc(), y free() rutinas, y inicializar un struct GMemVTable con ellos. (Suponiendo que el calloc() tcmalloc es superior, que también). Asegúrese de inicializar los miembros que no utilice a 0 (C99 inicialización llamado miembro es ideal para esto). Por último llame g_mem_set_vtable()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top