цитата с буста:
If you are seriously concerned about performance, use fast_pool_allocator when dealing with containers such as std::list, and use pool_allocator when dealing with containers such as std::vector.
странно. при использовании
typedef boost::shared_ptr<Foo> FooPtr;
std::vector< FooPtr, boost::pool_allocator<FooPtr> > vec;
я получаю несколько тормознее по времени исполнения результаты нежели при использовании
std::vector< FooPtr, boost::fast_pool_allocator<FooPtr> > vec;
пробовал протестить в неск кусках своего кода, на различных векторах, с разными типами хранимых данных, и алгоритмами использования этих векторов -- результат по-прежнему непонятен: boost::fast_pool_allocator (который используется для std::list) для векторов оказывается быстрее чем boost::pool_allocator, который, следуя цитате из буста, и нужно применять к векторам. что я не так тестю?
Здравствуйте, Аноним, Вы писали:
А>пробовал протестить в неск кусках своего кода, на различных векторах, с разными типами хранимых данных, и алгоритмами использования этих векторов -- результат по-прежнему непонятен: boost::fast_pool_allocator (который используется для std::list) для векторов оказывается быстрее чем boost::pool_allocator, который, следуя цитате из буста, и нужно применять к векторам. что я не так тестю?
Если вас беспокоит "misleading documentation" из буста — напишите в boost-users. Если вы сможете продемонстрировать аргументы, то возможно они пофиксят доку.
Если вас действительно (а не для спортивного интереса) беспокоит производительность определенной части своего кода, то выбросьте эти аллокаторы
И затем если проблемы с vector, то вам придется измерить количество и причины переаллокаций, а затем изменить схему владения этими векторами так чтобы они создавались там где известен верхний предел их размера.
Если же профайлер намекает вам на std::list, то пришло время его выбрасывать. Как — тут нужны детали о том что в списке и почему тормозит так что универсального совета быть не может. Как бы стандартен и красив std::list не был, но на критическом пути ему не место.
wbr