Если где-то неподалеку поднят Redis, можно его заюзать - http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/
3 августа 2012 г., 10:50 пользователь Yury Zavarin <[email protected]> написал: > > > 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 > -- С уважением, Александр Личный блог: http://eax.me/ Мой форум: http://it-talk.org/ Мой Twitter: http://twitter.com/afiskon -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
