Могу ли я сохранить в памяти dict со значениями цепочек битов без заполнения? - PullRequest
2 голосов
/ 08 ноября 2011

У меня есть подсказка от какого-то хеш-ключа к цепочке битов.Битовая строка может быть переменной длины, но обычно <160 бит и обычно <80.У меня есть около 80M пар ключ-значение. </p>

Как сохранить эту структуру данных в как можно меньшем объеме памяти?Я не хочу дополнять битовые строки, или я потеряю немного места (без каламбура).

Я предполагаю, что мне придется хранить байт в начале, дающий длину битастрока.Ничего страшного.

Какой самый эффективный способ сохранить этот дикт в памяти?

Я бы предпочел использовать Python, но я открыт для других вариантов.

1 Ответ

0 голосов
/ 08 ноября 2011

Если вы имеете в виду заполнение цепочек битов целым числом байтов, то вы можете сохранить объединение всех исходных цепочек битов в одну цепочку битов и сохранить словарь, значения которого являются кортежами вида (bit position, length).

Проблема в том, что если я правильно сделал математику, то длина этой более крупной цепочки битов может составить более 12 миллиардов бит, поэтому для bit position потребуется пара бит больше, чем int.Затем, если вам нужно дополнить битовую позицию, мы вернемся к квадрату.

Если, однако, количество различных длин <64, вы можете уместить поле длины в 6 бит, и вы закончитес помощью словаря, отображающего хеш-ключи для 5-байтовых кортежей, индексирующих в одну цепочку битов.Будет ли это работать для вас? </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...