[Moscow.pm] Очень медленное нахождение элемента в массиве

zhecka zhecka на gmail.com
Пт Ноя 25 03:47:25 PST 2016


Привет
берем Net::Patricia и переписываем код на неё. Radix Tree рулит!

On 25.11.2016 14:00, Naim Sh via Moscow-pm wrote:
> Коллеги, столкнулся с тем что код такого вида , используемый для 
> поиска свободных ip v4 адресов на размерах 500-1000 элементов 
> отрабатывается под 5 секунд версия с map :
>
> my %ips = map { $_ => 1 } @ips;
> if (not exists($ips{$iponly} ))
> {
>         return $iponly;
> }
>
>
>  и с grep(sic!) ~2 секунду :
>
> if ( ! ( grep {$iponly eq $_ } @ips ) )
> # spent 27.4ms making 814 calls to NetAddr::IP::Lite::broadcast 
> <http://ironleg.azedunet.az/nytprof/NetAddr-IP-Lite-pm-197-line.html#1073>, 
> avg 34µs/call
> # spent 9.56ms making 814 calls to 
> NetAddr::IP::Lite::__ANON__[NetAddr/IP/Lite.pm:268] 
> <http://ironleg.azedunet.az/nytprof/NetAddr-IP-Lite-pm-197-line.html#266>, 
> avg 12µs/call
> {
>     return $iponly;
> }
>
> Еще трабла в том что легендарный List::Util отдает быстро но почему не 
> тот же результат( пробовал first , none ) что и grep?
>
> коллеги это нормально на более-менее среднем сервачке ?
>
>
>

----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20161125/78dd9e33/attachment.html>


Подробная информация о списке рассылки Moscow-pm