Re[3]: Заменить boost.pool_allocator.
От: MNZ Россия  
Дата: 15.10.19 15:01
Оценка:
Здравствуйте, Went, Вы писали:

W>Здравствуйте, MNZ, Вы писали:


MNZ>>Здравствуйте, Went, Вы писали:


W>>>Что посоветуете? Меня бы устроил простейший (даже однопоточный, так даже лучше) хидер-онли аллокатор, написаный без сложных платформенных вывертов, заточенный под хранение и частое удаление / создание мелких объектов равного размера, исключающий при этом постоянное непосредственно обращение к операциям кучи. Грубо говоря, "выделяю чанк на 1024 объекта указанного размера, и, если места не хватит, выделяю новый". Все.


MNZ>>Если на проекте используется C++17, то можно попробовать взять стандартные std::pmr::unsynchronized_pool_resource и std::pmr::polymorphic_allocator: https://en.cppreference.com/w/cpp/header/memory_resource.

W>Увы, пока что ограничен С++11. И, по-моему, указанный аллокатор (точнее, ресурс памяти) заточен под блоки разной длины, то есть будет априори неоптимален для моей задачи. Или я неверно прочитал?

Да вроде всё верно. Только про оптимальность лучше не судить умозрительно, а сделать конкретные замеры. Я сам этим аллокатором не пользовался — только бустовским, — и по сравнению с new он быстрее раз в пять.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.