[Moscow.pm] Большой битовый массив
Михаил Монашёв
postmaster на softsearch.ru
Пт Авг 3 23:28:53 PDT 2012
Здравствуйте, Vladimir.
>> Есть несколько миллионов чисел в диапазоне от 0 до 2 в 32 степени
>> минус 1 . Нужно быстро проверять, есть такое число или нету. Если
>> засунуть их в битовый массив, то они все влезут в 16 мегабайт. Вопрос
>> в том, каким модулем пользоваться для записи/чтения в этот битовый
>> массив, чтобы было быстро и при этом не раздувалось в памяти более
>> 20-30 мегабайт? Или может проще самому через substr + побитовые ИЛИ/И
>> реализовать чзапись/чтение?
> Мне кажется, вам может подойти Judy ;-)
> https://gist.github.com/3252244
> Тут тест... памяти такой массив занимает 13Мб на 4 с небольшим млн
> элементов битовых, скорость доступа достаточно высока.
> Я сравнивал не с вектором (который по памяти проигрывает, а с хешом
> перловым), вот вывод у меня дома:
> $ perl test.pl
> fill array...
> done...
> Judy stats:
> Count all: 4297124
> Count (<=10000): 10
> MemUsage: 13115440
> benchmark tests...
> Benchmark: running Hash, Judy for at least 2 CPU seconds...
> Hash: 2 wallclock secs ( 2.10 usr + 0.00 sys = 2.10 CPU) @
> 1963552.36/s (n=4126528)
> Judy: 2 wallclock secs ( 2.00 usr + 0.00 sys = 2.00 CPU) @
> 2505395.00/s (n=5010790)
> Вообще в продакшн, я этим модулем не пользовался, как-то не
> требовалось до сих пор, так что мемлики, треды и т.п. желательно
> потестить.
Спасибо большое. Попробуем. Как раз то, что нужно.
--
С уважением,
Михаил mailto:postmaster на softsearch.ru
Подробная информация о списке рассылки Moscow-pm