He leído en un libro de recetas de optimización C++ que el asignador estándar para contenedores STL como std :: list, std :: set, std :: multi_set, std :: map , e std :: multi_map puede ser reemplazado por un asignador de bloque más eficaz.std :: map rendimiento del asignador estándar versus asignador de bloque
Un asignador de bloques tiene un mayor rendimiento, baja fragmentación y almacenamiento de datos eficiente.
He encontrado en la web el FSBAllocator que dice ser más rápido que el estándar. http://warp.povusers.org/FSBAllocator/
Yo lo he probado con std :: mapa y encontrar el más rápido parece ser cierto, pero mi pregunta es ¿cómo puede ser la implementación STL sea tan lento que un asignador específica y cuáles son los inconvenientes de otro asignador que el estándar, en términos de portabilidad y robustez? Mi código debe compilarse en una variedad de arquitecturas (win32, osx, linux). ¿Alguien tiene experiencia con ese tipo de asignador de bloque de tamaño fijo?
Supongo que el asignador de STL es lo más genérico posible y eficiente para la mayoría de los casos. No utilizaría otro tipo de asignador a menos que haya un problema de rendimiento real con mi código. – Max
El asignador de bloque suena como uno que no puede asignar tamaños de abitrary con tan poca sobrecarga como el estándar. –