Используйте собственный распределитель с boost :: bimap - PullRequest
5 голосов
/ 22 ноября 2011

Я работаю над повышением производительности программы, которая использует библиотеку графов ускорения и boost::bimap. Профилирование показало, что большую часть времени тратится на распределение и освобождение памяти. Использование класса adjacency_list библиотеки графов с использованием boost::fast_pool_allocator значительно улучшило производительность. Большая часть оставшихся выделений памяти происходит в boost::bimap, поэтому я хотел поэкспериментировать с использованием там собственного распределителя. Документация говорит, что вы можете указать распределитель как последний параметр шаблона bimap, но в нем не указано, каким типом должен быть аргумент шаблона самого распределителя. Например, для типов X и Y, в

boost::bimap<set_of<X>, set_of<Y>, boost::fast_pool_allocator<Z> >

что нужно заполнить для Z?

1 Ответ

3 голосов
/ 22 ноября 2011

Я считаю, что ответ для Z, вы должны заполнить std::pair<X,Y>.В моем случае это работало, но я хотел опубликовать здесь, потому что

  • это не очевидно из документации
  • Код повышения не быстро читается
  • Поиск в Google не помог
  • и другие люди могут иметь полезные комментарии (например, я не проверял, зависит ли это от того, как выглядит левый или правый вид двуногой)
...