[Moscow.pm] tie Berkeley. Разобрался!!!
Jack of Shadows
somerandomlogin на gmail.com
Вт Окт 23 23:45:21 PDT 2012
Профайлер спасёт отца русской демократии.
2012/10/24 ksvs <ksvs1996 at ymail.com>:
>
> Разобрался!!!
>
> Оказывается, в отличие от обычных хешей, для tied хешей вызов
> scalar keys %foo не оптимизирован. Поэтому вместо того, чтобы просто вернуть количество записей, идет перебор и подсчет всех.
> Читал, что в какой-то базе данных тоже так. или в Постгресс или ИнноДВ.
>
> Вот как оказывается, заменил одну строчку, а какой результат.
>
> Как только стал посчитывать сам - все залетало!
>
> Интересно, а много еще подводных камней в Perl?
>
> А если бы не использовал tie, а напрямую, то не потерял бы 4 дня!!!
>
> После этого задумаешься, а стоит смотреть на Moose и прочие штучки.
>
>
>
>
> ----- Original Message -----
> From: ksvs <ksvs1996 at ymail.com>
> To: Moscow.pm group <moscow-pm at pm.org>
> Cc:
> Sent: Tuesday, 23 October 2012, 9:07
> Subject: Re: [Moscow.pm] tie Berkeley
>
>> Даже интересно стало. Вот что я сделал:
>
>> https://gist.github.com/3933779
>> и убил свою ZFS на фряхе )))
>>
>> Она все же пишет на диск, не знаю куда, но много.
>> В gist'е последний результат которого я смог дождаться 1500000
>> элементов в хеше...
>>
>> А вот, когда я сделал
>> tie %h1, 'BerkeleyDB::Hash', -Cachesize => 700_000_000; # поставить
>> cache в 700Mb
>>
>> Процесс в памяти занял больше, но мучения диска начались только вот тут:
>> 100000 5378313/s 223696/s
>> 300000 5378313/s 231981/s
>> 700000 5474182/s 233712/s
>> 1500000 5296201/s 233712/s
>> 3100000 5064251/s 235469/s
>> 6300000 5420331/s 233712/s
>
> А я сделал замеры скорости программы от размера кеша:
> когда перловый кеш, то примерно О(1), когда Берклевский, то О(n)!
>
> Тю, а я не догадался, что можно Берклей без файла использовать.
> Просто сделал файл на /tmp, а /tmp у меня в памяти сделаны.
>
>
> P.S. У меня тоже FreeBSD :-)
>
> --
> Moscow.pm mailing list
> moscow-pm at pm.org | http://moscow.pm.org
>
> --
> Moscow.pm mailing list
> moscow-pm at pm.org | http://moscow.pm.org
Подробная информация о списке рассылки Moscow-pm