Накладные расходы на распределение памяти - PullRequest
1 голос
/ 03 января 2011

Я создавал временный стек объектов - в основном для использования структур STL на основе кучи, которые на самом деле имеют только временные времена жизни, но также и для любого другого временного динамического распределения. Один стек выполняет все типы хранения в развернутом связанном списке.

Я пришел кроппером с выравниванием. Я могу получить выравнивание с std::alignment_of<T>, но это не очень хорошо, потому что мне нужно выравнивание типа next , который я хочу выделить. Прямо сейчас я просто произвел произвольный размер каждого объекта, кратный 16, что, насколько я знаю, является максимальным выравниванием для любого типа x86 или x64. Но теперь у меня есть два указателя накладных расходов памяти на объект, а также стоимость их размещения в моем векторе, плюс стоимость округления каждого размера до значения, кратного 16.

С положительной стороны, строительство и разрушение быстрое и надежное.

Как это сравнить с обычным оператором new / delete? И какие тестовые наборы я могу запустить? Я очень доволен своим текущим прогрессом и не хочу узнавать позже, что он ошибочен каким-то неприятным тонким способом, поэтому любые советы по тестированию операций были бы хорошими.

1 Ответ

0 голосов
/ 04 марта 2011

Это на самом деле не отвечает на ваш вопрос, но Boost недавно добавил библиотеку пул памяти в самой последней версии.

Возможно, это не совсем то, что вы хотите, ноесть тщательная обработка выравнивания , которая может вызвать идею?Если документов недостаточно, всегда есть исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...