Ste*_*end 18 c++ memory-management deque
跟进std :: deque的内存开销对heque的影响是什么?
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) */
Run Code Online (Sandbox Code Playgroud)
这导致小元件的内存占用非常大.通过将第一行中的16更改为128,我能够大幅减少大型所需的占用空间deque<char>.在100m push_back(const char& mychar)调用后,Process Explorer Private Bytes从181MB减少到> 113MB .
#define吗? deque块大小调整?push_back调用
的简单测试,它们的占用空间(32位操作)是deque<char>什么? <deque>代码?gcc有
return __size < 512 ? size_t(512 / __size) : size_t(1);
Run Code Online (Sandbox Code Playgroud)
评论
/* The '512' is
* tunable (and no other code needs to change), but no investigation has
* been done since inheriting the SGI code.
*/
Run Code Online (Sandbox Code Playgroud)