<div dir="ltr"><div><div><div>Выглядит не реально, можешь код с данными выложить тем более (500-1000) элементов это ~ 8кб всего.<br><br></div>Тестовый пример:<br>======================<br>    use Time::HiRes qw(time);<br>    my @ips = (1..1001);<br>    for my $i (0..4){<br>    my $iponly = 995 + $i;<br>        my $s = time ();<br>        my %ips = map { $_ => 1 } @ips;<br>        my $r1 = (not exists $ips{$iponly});<br>        my $time1 = time - $s;<br><br>        $s = time ();<br>        my $r2 = grep $_ eq $iponly, @ips;<br>        my $time2 = time - $s;<br>        printf ("i=$i\tmap=%4.3fms grep=%4.3fms\n", $time1 * 1000, $time2 * 1000);<br>    }<br>=======================<br><br>i=0     map=0.660ms grep=0.116ms<br>i=1     map=0.515ms grep=0.070ms<br>i=2     map=0.471ms grep=0.070ms<br>i=3     map=0.529ms grep=0.071ms<br>i=4     map=0.385ms grep=0.051ms<br><br>========================<br><br></div>Конечно map медленнее, но до двух секунд ему далеко(разница в три порядка)<br><br></div>Нужно смотреть на код и данные, может там есть магия.<br><div><div><br><br><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">25 ноября 2016 г., 14:00 пользователь Naim Sh via Moscow-pm <span dir="ltr"><<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  

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

<br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>