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