Я использую std::map
для хранения около 20 миллионов записей. Если они были сохранены без каких-либо накладных расходов на контейнер, это займет примерно 650 МБ памяти. Однако, поскольку они хранятся с использованием std::map
, он использует примерно 15 ГБ памяти (т. Е. Слишком много).Память эффективная std :: map альтернатива
Причина, по которой я использую std::map
, заключается в том, что мне нужно найти ключи, которые равны/больше/меньше, чем x
. Вот почему что-то вроде sparsehash
не будет работать (поскольку, используя это, я не могу найти ключи по сравнению).
Есть ли альтернатива использованию std::map
(или упорядоченных карт в целом), что приведет к меньшему использованию памяти?
EDIT: Производительность записи много более важно, чем чтение. Вероятно, он будет читать только ~ 10 записей, но я не знаю, какие записи он будет читать.
Насколько велики значения по сравнению с ключами? – Bathsheba
Какие типы данных вы используете в качестве ключа/значения? какие запросы вам нужно выполнить точно? ваш статический набор данных? –
Зачем вам это нужно в памяти и не обрабатывать в любой базе данных? –