У меня сейчас тяжелая проблема. У меня большой файл словаря для загрузки в моей программе, его формат в основном:
word1 val1
word2 val2
word3 val3
...
...
Этот файл имеет 170 тыс. Строк, а его размер составляет 3,9 МБ на диске (в виде простого текста). В моей реализации я использовал boost :: unordered_map (hashtable), чтобы хранить эти данные для поддержки операций поиска только для чтения в моей программе.
Тем не менее, после загрузки в память во время выполнения, использование памяти увеличилось на 20 МБ из-за операции загрузки (я проверил это с помощью Размер частного рабочего набора в диспетчере задач Windows, может быть, это не правильный способ определения использования памяти?). Я знаю, что в хеш-таблице должны быть некоторые вспомогательные структуры данных для хранения этих данных, которые увеличат использование памяти, но я не ожидал, что объем памяти будет в 5 раз больше, чем размер диска !
Это нормально? Поскольку я попробовал другую версию hashmap в библиотеке расширений std и структуру Trie в какой-то другой памяти, ни одна из них не принесла существенного улучшения в этом вопросе.
Так что я хочу реализовать некоторую оптимизацию пространства над этой проблемой. Кто-нибудь может дать несколько советов или ключевых слов, которые помогут мне улучшить использование пространства?