[Moscow.pm] Очень медленное нахождение элемента в массиве
Naim Sh
shafiev на gmail.com
Пт Ноя 25 03:00:48 PST 2016
Коллеги, столкнулся с тем что код такого вида , используемый для поиска
свободных 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/27b6f1e1/attachment.html>
Подробная информация о списке рассылки Moscow-pm