Производительность стандартного распределителя std::map по сравнению с распределителем блоков

В кулинарной книге по оптимизации C++ я прочитал, что стандартный распределитель для контейнеров STL, таких как std::list, std::set, std::multi_set, std::map, e std::multi_map, можно заменить на более производительный распределитель блоков.

Распределитель блоков имеет более высокую производительность, низкую фрагментацию и эффективное кэширование данных.

Я нашел в сети FSBallocator, который утверждает, что работает быстрее стандартного. http://warp.povusers.org/FSBAllocator/

Я попробовал это с std::map и обнаружил, что он действительно работает быстрее, но мой вопрос заключается в том, как реализация STL может быть такой медленной. чем конкретный распределитель, и каковы недостатки другого распределителя, кроме стандартного, с точки зрения переносимости и надежности? Мой код должен компилироваться на различных архитектурах (win32, osx, linux). Кто-нибудь имел опыт работы с таким распределителем блоков фиксированного размера?

9
задан linello 8 March 2012 в 14:48
поделиться