Продолжение до Что происходит с накладными расходами памяти std :: deque?
Visual C ++ управляет блоками deque
в соответствии с типом элемента контейнера, используя следующее:
#define _DEQUESIZ (sizeof (value_type) <= 1 ? 16 \
: sizeof (value_type) <= 2 ? 8 \
: sizeof (value_type) <= 4 ? 4 \
: sizeof (value_type) <= 8 ? 2 \
: 1) /* elements per block (a power of 2) */
Это приводит к очень большому объему памяти для небольших элементов. Изменив 16 в первой строке на 128, я смог резко уменьшить занимаемую площадь, необходимую для большого deque
. Частные байты Process Explorer уменьшились с 181 МБ до 113 МБ после 100 м push_back (const char & mychar)
вызовов).
deque
. Частные байты Process Explorer уменьшились с 181 МБ до 113 МБ после 100 м push_back (const char & mychar)
вызовов).
deque
. Частные байты Process Explorer уменьшились с 181 МБ до 113 МБ после 100 м push_back (const char & mychar)
вызовов).
#define
? deque
калибровка? push_back
вызовов на
deque
?
код?