나는 약 2 천만 개의 항목을 저장하기 위해 std::map
을 사용하고 있습니다. 컨테이너 오버 헤드없이 저장 한 경우 약 650MB의 메모리가 필요합니다. 그러나 그들은 std::map
을 사용하여 저장되기 때문에 약 15GB의 메모리를 사용합니다 (너무 많음).메모리 효율 std :: map 대체
내가 std::map
을 사용하는 이유는 x
과 같거나 더 크거나 작은 키를 찾아야하기 때문입니다. 이런 이유로 sparsehash
같은 것이 작동하지 않습니다. (그걸 사용하기 때문에, 비교로 키를 찾을 수 없기 때문입니다.)
std::map
(또는 일반적으로 주문한지도)을 사용하면 메모리 사용량이 줄어들 수 있습니다.
편집 : 쓰기 성능은 읽기 성능보다 더 중요합니다. 많이입니다. 아마도 ~ 10 개의 항목 만 읽지 만 읽을 항목을 모릅니다. 대신 나무의 (std::vector
생각) std::map
과 동일한 인터페이스를 지원하지만, 정렬 된 연속 배열에 연동하는 :
값이 키와 비교하여 얼마나 큽니까? – Bathsheba
어떤 데이터 유형을 키/값으로 사용합니까? 어떤 쿼리를 정확히 수행해야합니까? 귀하의 데이터 세트는 정적입니까? –
왜 메모리에서 바로 필요하고 데이터베이스에서 처리하지 않는가? –