<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">ну я бы не сказал.<br>
      <br>
      $banned = new Net::Patricia;<br>
      if(!$banned->match_string($banip))<br>
          {<br>
               $banned->add_string($banip);<br>
          }<br>
      <br>
      просто заполняешь базу Patricia когда тебе нужно и матчишь что
      есть и чего нет.<br>
      <br>
      <br>
      <br>
      On 25.11.2016 14:54, Naim Sh via Moscow-pm wrote:<br>
    </div>
    <blockquote
      cite="mid:39e43571-744e-faf4-0c76-359957ce8531@gmail.com"
      type="cite">
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
      <p>да кроме 2 и 3  его нету . <br>
      </p>
      Кстати как я понял Net::Patricia не очень мне подходит(удобен)
      ведь мне надо найти адрес которого нет в массиве<br>
      <br>
      This module uses a Patricia Trie data structure to quickly perform
      IP address prefix matching for applications such as IP subnet,
      network or routing table lookups ?<br>
      <br>
      <div class="moz-cite-prefix">On 11/25/2016 03:50 PM, Толян II via
        Moscow-pm wrote:<br>
      </div>
      <blockquote
cite="mid:CAJMZ6sC_rjpZ9ycC8Q5nZRPNfm69Lhd3ivLrF5mAdA+M9zn_Ew@mail.gmail.com"
        type="cite">
        <div dir="ltr">
          <div>
            <div>У тебя может быть overload в нескольких местах:<br>
            </div>
            1) В массиве @ips<br>
          </div>
          2)  while( $ipn < $ipn->broadcast )              ---
          вызов метода + overload<br>
          3) my $iponly = (split '/', $ipn++)[0]; #get<span
            class="gmail-im">     --- overload в чистом виде +
            преобразование в строку.<br>
            <br>
            <br>
          </span>
          <div>
            <div>
              <div>
                <div>
                  <div><br>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">25 ноября 2016 г., 14:38 пользователь
            Naim Sh via Moscow-pm <span dir="ltr"><<a
                moz-do-not-send="true" class="moz-txt-link-abbreviated"
                href="mailto:moscow-pm@pm.org">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">Оки и
              какой вариант быстрее того же map будет .<br>
              код имеет такой вид ( точнее его кусок который больше
              всего времени и ест )<br>
              <br>
              массив @ips имеет стандартные ipv4 адреса типа 10.56.6.2,
              10.135.8.23  , 10.135.22.43 и тд и тп .<br>
              <br>
                      my $ipn = NetAddr::IP->new("$first_ip/$n<wbr>etmask");<br>
              <br>
                      while( $ipn < $ipn->broadcast )<br>
                      {<br>
                          my $iponly = (split '/', $ipn++)[0]; #get<span
                class=""><br>
                <br>
                            if ( ! ( grep {$iponly eq $_}  @ips )  )<br>
              </span>             {<br>
                              return $iponly;<br>
                          }<br>
              <br>
                      }<br>
              <br>
              first отдает не то что мне нужно из под этой сети адрес в
              данном случае 10.135.x.y а 10.56.x.y хотя да он первый
              пустой, но grep выдает то что нужно.<br>
              <br>
              Вроде tie переменных и т.д нету
              <div class="HOEnZb">
                <div class="h5"><br>
                  <br>
                  <br>
                  On 11/25/2016 03:29 PM, Sergey Aleynikov via Moscow-pm
                  wrote:<br>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex">
                    Добрый день,<br>
                    <br>
                    map будет быстрее только если поисков по одному и
                    тому же исходному<br>
                    массиву @ips будет несколько - т.к. операция
                    построения хэша дорогая.<br>
                    Одноразовый поиск - греп быстрее. first возвращает
                    другое (по смыслу)<br>
                    значение, чем греп (элемент, а не количество), но
                    логически для этой<br>
                    задачи разницы быть не должно.<br>
                    <br>
                    PS: my %ips; @ips{@ips} = (); быстрее, чем my %ips =
                    map { $_ => 1 } @ips;<br>
                    <br>
                    Best regards,<br>
                    Sergey Aleynikov<br>
                    <br>
                    <br>
                    25 ноября 2016 г., 14:00 пользователь Naim Sh via
                    Moscow-pm<br>
                    <<a moz-do-not-send="true"
                      href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>>
                    написал:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0
                      .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      Коллеги, столкнулся с тем что код такого вида ,
                      используемый для поиска<br>
                      свободных ip v4 адресов на размерах 500-1000
                      элементов отрабатывается под 5<br>
                      секунд версия с 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
                      NetAddr::IP::Lite::broadcast, avg<br>
                      34µs/call<br>
                      # spent 9.56ms making 814 calls to<br>
                      NetAddr::IP::Lite::__ANON__[Ne<wbr>tAddr/IP/Lite.pm:268],
                      avg 12µs/call<br>
                      {<br>
                           return $iponly;<br>
                      }<br>
                      <br>
                      Еще трабла в том что легендарный List::Util отдает
                      быстро но почему не тот<br>
                      же результат( пробовал first , none ) что и grep?<br>
                      <br>
                      коллеги это нормально на более-менее среднем
                      сервачке ?<br>
                      <br>
                      <br>
                      --<br>
                      Moscow.pm mailing list<br>
                      <a moz-do-not-send="true"
                        href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>
                      | <a moz-do-not-send="true"
                        href="http://moscow.pm.org" rel="noreferrer"
                        target="_blank">http://moscow.pm.org</a><br>
                      <br>
                    </blockquote>
                  </blockquote>
                  <br>
                  -- <br>
                   <br>
                  -- <br>
                  Moscow.pm mailing list<br>
                  <a moz-do-not-send="true"
                    href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>
                  | <a moz-do-not-send="true"
                    class="moz-txt-link-freetext"
                    href="http://moscow.pm.org">http://moscow.pm.org</a><br>
                </div>
              </div>
            </blockquote>
          </div>
          <br>
        </div>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <br>
      </blockquote>
      <br>
      <pre class="moz-signature" cols="72">-- 
 </pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>