[Moscow.pm] map vs foreach
Victor Efimov
victor на vsespb.ru
Вт Ноя 24 12:53:52 PST 2015
24 ноября 2015 г., 23:45 пользователь Ilya Chesnokov
<chesnokov.ilya на gmail.com> написал:
> 24 ноября 2015 г., 22:30 пользователь Mescalito
> <mescalito.ua на gmail.com> написал:
>> Приветствую, коллеги!
>>
>> Есть вполне опредленная задача - взять массив произвольного размера и
>> что-то однотипное сделать с его элементами.
>> Можно это сделать вида:
>>
>> foreach(@array) {
>> do_something($_)
>> }
>>
>> а можно
>>
>> map { do_something($_) } @array
>>
>> Вторая запись мне нравится больше, т.к. она более лаконична и более
>> очевидно возвращается массив измененных элементов.
>>
>> Вопрос в том, какие есть подводные камни второго метода и какой из методов
>> быстрее
>
> https://gist.github.com/ichesnokov/7feea4c15a868d48e5a0
>
ага, или такой бенчмарк как раз показывает почему секс в
программировании должен быть только для продолжения рода:
$ perl -MBenchmark=cmpthese -E 'cmpthese(100000, { for => sub { my $i
= 0; for (1..1000) { $i += $_; } }, map => sub { my $i=0; map { $i +=
$_; } 1..1000 }, map2 => sub { my $i=0; map { $i += $_; } 1..1000; 1 }
} ) '
Rate map map2 for
map 18904/s -- -8% -11%
map2 20534/s 9% -- -3%
for 21186/s 12% 3% --
>> и оптимальнее по памяти (обрабатывается большое количество текста в
>> каждом элементе)
>>
>> Все что я нашел в выдаче гугла и в монастыре - суть набор холиворов.
>> Может кто-то здесь обладает сакральным знанием?
>>
>>
>> --
>> WBR,
>> Mescalito.
>>
>> mailto: mescalito.ua на gmail.com
>> skype: mescalito_genesys
>> phone: +38 067 974 7812
>> phone: +7 915 382 2412
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
>
>
> --
> Best regards,
> Ilya Chesnokov
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
Подробная информация о списке рассылки Moscow-pm