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

Victor Efimov victor на vsespb.ru
Пт Ноя 25 10:27:17 PST 2016


столько писем в треде и ни одного нормального PoC тест-кейза, где
показывается как оно тормозит 5 сек, без всяких cpan модулей и с ip
адресами нагенерированными в этом же кейзе.

25 ноября 2016 г., 21:09 пользователь Naim Shafiev via Moscow-pm
<moscow-pm на pm.org> написал:
> да только на версии с grep, но там в modern perl telegram чате петрусевич
> побольше чем я занялся ускорение .
> вот результаты
> Anton Petrusevich:
> грубо говоря так: когда while( $ipn < $ipn->broadcast ), то вайл занимает
> 2.2сек; когда my $bc = $ipn->broadcast; while ($ipn < $bc) {, то 1.3сек;
> когда без модуля, чисто use Socket/inet_ntoa/inet_aton, то ... 0.293ms
>
>
> On Nov 25, 2016 9:17 PM, "Denis Evdokimov via Moscow-pm" <moscow-pm на pm.org>
> wrote:
>>
>> Данных катастрофически не хватает.
>> Судя по первому письму профайлер запускался, но только на версии с grep.
>>
>> Предположу, что map-версия выглядит примерно так:
>> foreach my $iponly (@bla_bla_bla)
>> {
>>     my %ips = map { $_ => 1 } @ips;
>>     if (not exists($ips{$iponly} ))
>>     {
>>         return $iponly;
>>     }
>> }
>>
>>
>> тогда её нужно переписать так:
>> my %ips = map { $_ => 1 } @ips;
>> foreach my $iponly (@bla_bla_bla)
>> {
>>     if (not exists($ips{$iponly} ))
>>     {
>>         return $iponly;
>>     }
>> }
>>
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>


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