[Moscow.pm] Большой битовый массив

Yury Zavarin yury.zavarin на gmail.com
Чт Авг 2 23:50:43 PDT 2012


2012/8/3 Yury Zavarin <yury.zavarin на gmail.com>

> 2012/8/3 Михаил Монашёв <postmaster на softsearch.ru>
>
>> Здравствуйте.
>>
>> Есть  несколько  миллионов  чисел  в  диапазоне от 0 до 2 в 32 степени
>> минус  1  .  Нужно  быстро  проверять, есть такое число или нету. Если
>> засунуть  их в битовый массив, то они все влезут в 16 мегабайт. Вопрос
>> в  том,  каким  модулем  пользоваться для записи/чтения в этот битовый
>> массив,  чтобы  было  быстро  и при этом не раздувалось в памяти более
>> 20-30  мегабайт? Или может проще самому через substr + побитовые ИЛИ/И
>> реализовать чзапись/чтение?
>>
>
> Э, гм, если от 0 до 2**32, то нужно вообще-то 512 мегабайт памяти, если по
> биту на одно число.
>
> Есть модуль Bit::Vector как обвязка над vec().
>

Здесь я нагнал, там внутри у них своя реализация на C.


> Если сделать
> Bit::Vector->new(2**32 - 1)
> то как раз где-то 512 Мб отъест.
>
>
>>
>> --
>> С уважением,
>>  Михаил                          mailto:postmaster на softsearch.ru
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20120803/971b8373/attachment.html>


Подробная информация о списке рассылки Moscow-pm