2010-04-03 10 views
5

Qué asignadores están disponibles para usar con STL cuando se trata de objetos pequeños. Ya he intentado jugar con los asignadores de grupo de Boost, pero no obtuve ninguna mejora en el rendimiento (de hecho, en algunos casos hubo una degradación considerable).C++ Asignadores conforme a STL

Respuesta

3

No dijo qué compilador usa, pero probablemente viene con un grupo de asignadores preconstruidos. Esto es en un Mac con gcc 4.2.1:

~$ find /usr/include/c++/4.2.1/ -name "*allocator*" 
/usr/include/c++/4.2.1/bits/allocator.h 
/usr/include/c++/4.2.1/ext/array_allocator.h 
/usr/include/c++/4.2.1/ext/bitmap_allocator.h 
/usr/include/c++/4.2.1/ext/debug_allocator.h 
/usr/include/c++/4.2.1/ext/malloc_allocator.h 
/usr/include/c++/4.2.1/ext/mt_allocator.h 
/usr/include/c++/4.2.1/ext/new_allocator.h 
/usr/include/c++/4.2.1/ext/pool_allocator.h 
/usr/include/c++/4.2.1/ext/throw_allocator.h 

Aquí también un enlace a la página BitMagic proyecto que habla de cómo construir su propia. También consulte el asignador de objetos pequeños en el Loki library (y el book también).

1

La implementación de la biblioteca estándar de Microsoft Visual C++ proporciona several proprietary allocators para contenedores basados ​​en nodos (al menos a partir del próximo lanzamiento de Visual Studio 2010).

1

Necesita un asignador que sea adecuado para sus necesidades específicas. El asignador genérico de STL es el mejor para la gran variedad de circunstancias, y si quiere un nuevo asignador, tendrá que perfilar y comprender sus requisitos específicos. Tendrás que ser más específico sobre en qué contenedor vas a colocar estos objetos.