почему так происходит? вопрос про скорость исполнения и пулы
От: Аноним  
Дата: 30.08.08 14:59
Оценка:
цитата с буста:

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, который, следуя цитате из буста, и нужно применять к векторам. что я не так тестю?
Re: почему так происходит? вопрос про скорость исполнения и
От: SleepyDrago Украина  
Дата: 31.08.08 11:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>пробовал протестить в неск кусках своего кода, на различных векторах, с разными типами хранимых данных, и алгоритмами использования этих векторов -- результат по-прежнему непонятен: boost::fast_pool_allocator (который используется для std::list) для векторов оказывается быстрее чем boost::pool_allocator, который, следуя цитате из буста, и нужно применять к векторам. что я не так тестю?


Если вас беспокоит "misleading documentation" из буста — напишите в boost-users. Если вы сможете продемонстрировать аргументы, то возможно они пофиксят доку.

Если вас действительно (а не для спортивного интереса) беспокоит производительность определенной части своего кода, то выбросьте эти аллокаторы
И затем если проблемы с vector, то вам придется измерить количество и причины переаллокаций, а затем изменить схему владения этими векторами так чтобы они создавались там где известен верхний предел их размера.
Если же профайлер намекает вам на std::list, то пришло время его выбрасывать. Как — тут нужны детали о том что в списке и почему тормозит так что универсального совета быть не может. Как бы стандартен и красив std::list не был, но на критическом пути ему не место.

wbr
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.