2012/8/3 Михаил Монашёв <span dir="ltr"><<a href="mailto:postmaster@softsearch.ru" target="_blank">postmaster@softsearch.ru</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Здравствуйте.<br>
<br>
Есть  несколько  миллионов  чисел  в  диапазоне от 0 до 2 в 32 степени<br>
минус  1  .  Нужно  быстро  проверять, есть такое число или нету. Если<br>
засунуть  их в битовый массив, то они все влезут в 16 мегабайт. Вопрос<br>
в  том,  каким  модулем  пользоваться для записи/чтения в этот битовый<br>
массив,  чтобы  было  быстро  и при этом не раздувалось в памяти более<br>
20-30  мегабайт? Или может проще самому через substr + побитовые ИЛИ/И<br>
реализовать чзапись/чтение?<br></blockquote><div><br></div><div>Э, гм, если от 0 до 2**32, то нужно вообще-то 512 мегабайт памяти, если по биту на одно число.</div><div><br></div><div>Есть модуль Bit::Vector как обвязка над vec(). Если сделать</div>
<div>Bit::Vector->new(2**32 - 1)</div><div>то как раз где-то 512 Мб отъест.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
--<br>
С уважением,<br>
 Михаил                          mailto:<a href="mailto:postmaster@softsearch.ru">postmaster@softsearch.ru</a><br>
<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</font></span></blockquote></div><br>