Выглядит не реально, можешь код с данными выложить тем более (500-1000)
элементов это ~ 8кб всего.

Тестовый пример:
======================
    use Time::HiRes qw(time);
    my @ips = (1..1001);
    for my $i (0..4){
    my $iponly = 995 + $i;
        my $s = time ();
        my %ips = map { $_ => 1 } @ips;
        my $r1 = (not exists $ips{$iponly});
        my $time1 = time - $s;

        $s = time ();
        my $r2 = grep $_ eq $iponly, @ips;
        my $time2 = time - $s;
        printf ("i=$i\tmap=%4.3fms grep=%4.3fms\n", $time1 * 1000, $time2 *
1000);
    }
=======================

i=0     map=0.660ms grep=0.116ms
i=1     map=0.515ms grep=0.070ms
i=2     map=0.471ms grep=0.070ms
i=3     map=0.529ms grep=0.071ms
i=4     map=0.385ms grep=0.051ms

========================

Конечно map медленнее, но до двух секунд ему далеко(разница в три порядка)

Нужно смотреть на код и данные, может там есть магия.




25 ноября 2016 г., 14:00 пользователь Naim Sh via Moscow-pm <
[email protected]> написал:

> Коллеги, столкнулся с тем что код такого вида , используемый для поиска
> свободных 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?
>
> коллеги это нормально на более-менее среднем сервачке ?
>
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить