[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