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

Alexandr Alexeev afiskon на gmail.com
Чт Авг 2 23:59:22 PDT 2012


Если где-то неподалеку поднят Redis, можно его заюзать -
http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/

3 августа 2012 г., 10:50 пользователь Yury Zavarin
<yury.zavarin на gmail.com> написал:
>
>
> 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
>>
>>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon


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