2012/8/3 Михаил Монашёв <[email protected]>

> Здравствуйте.
>
> Есть  несколько  миллионов  чисел  в  диапазоне от 0 до 2 в 32 степени
> минус  1  .  Нужно  быстро  проверять, есть такое число или нету. Если
> засунуть  их в битовый массив, то они все влезут в 16 мегабайт. Вопрос
> в  том,  каким  модулем  пользоваться для записи/чтения в этот битовый
> массив,  чтобы  было  быстро  и при этом не раздувалось в памяти более
> 20-30  мегабайт? Или может проще самому через substr + побитовые ИЛИ/И
> реализовать чзапись/чтение?
>

Э, гм, если от 0 до 2**32, то нужно вообще-то 512 мегабайт памяти, если по
биту на одно число.

Есть модуль Bit::Vector как обвязка над vec(). Если сделать
Bit::Vector->new(2**32 - 1)
то как раз где-то 512 Мб отъест.


>
> --
> С уважением,
>  Михаил                          mailto:[email protected]
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить