Сообщение Re: stl map много занимает пямяти от 25.08.2015 13:27
Изменено 25.08.2015 13:28 TimurSPB
Здравствуйте, kgrach, Вы писали:
K>Есть map<__int64, __int64>. Вставляю в него 10 млн элементов.
K>Измеряю сколько это хозяйство занимает в памяти места получается ~650 Мб.
K>При том, что сами данные грубо занимают ~160 Мб.
K>Как снизить издержки по памяти? Функциональность мap-а терять не хочется.
А если так:
K>Есть map<__int64, __int64>. Вставляю в него 10 млн элементов.
K>Измеряю сколько это хозяйство занимает в памяти места получается ~650 Мб.
K>При том, что сами данные грубо занимают ~160 Мб.
K>Как снизить издержки по памяти? Функциональность мap-а терять не хочется.
А если так:
#include <boost/pool/pool_alloc.hpp>
MEMORYSTATUSEX mem1 ={0}, mem2 ={0}, mem3 ={0};
mem1.dwLength = sizeof(mem1);
mem2.dwLength = sizeof(mem2);
GlobalMemoryStatusEx(&mem1);
typedef std::less<__int64> Int64Compare;
typedef std::pair<__int64, __int64> Int64Pair;
typedef boost::pool_allocator<Int64Pair> Int64Pool;
typedef std::map<int, __int64, Int64Compare, Int64Pool> Int64Map;
Int64Map mm1;
for (__int64 i=0; i<10000000; i++){
mm1[i] = i;
}
GlobalMemoryStatusEx(&mem2);
Re: stl map много занимает пямяти
Здравствуйте, kgrach, Вы писали:
K>Есть map<__int64, __int64>. Вставляю в него 10 млн элементов.
K>Измеряю сколько это хозяйство занимает в памяти места получается ~650 Мб.
K>При том, что сами данные грубо занимают ~160 Мб.
K>Как снизить издержки по памяти? Функциональность мap-а терять не хочется.
А если так:
K>Есть map<__int64, __int64>. Вставляю в него 10 млн элементов.
K>Измеряю сколько это хозяйство занимает в памяти места получается ~650 Мб.
K>При том, что сами данные грубо занимают ~160 Мб.
K>Как снизить издержки по памяти? Функциональность мap-а терять не хочется.
А если так:
#include <boost/pool/pool_alloc.hpp>
MEMORYSTATUSEX mem1 ={0}, mem2 ={0}, mem3 ={0};
mem1.dwLength = sizeof(mem1);
mem2.dwLength = sizeof(mem2);
GlobalMemoryStatusEx(&mem1);
typedef std::less<__int64> Int64Compare;
typedef std::pair<__int64, __int64> Int64Pair;
typedef boost::pool_allocator<Int64Pair> Int64Pool;
typedef std::map<__int64, __int64, Int64Compare, Int64Pool> Int64Map;
Int64Map mm1;
for (__int64 i=0; i<10000000; i++){
mm1[i] = i;
}
GlobalMemoryStatusEx(&mem2);