[Moscow.pm] map vs foreach

Ilya Chesnokov chesnokov.ilya на gmail.com
Ср Ноя 25 03:27:35 PST 2015


25 ноября 2015 г., 12:39 пользователь Ivan Petrov
<i.petro.77.00 на gmail.com> написал:
>
>> 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 }, foreach => sub { my $i=0; foreach (1..1000) { $i+=$_; } }, postfix_for => sub { my $i=0; $i+=$_ for 1..1000; }, postfix_foreach => sub { my $i = 0; $i += $_ foreach 1..1000; }   });'
>                    Rate  foreach       for       map postfix_for postfix_foreach
> foreach         20790/s       --       -1%       -8%        -12%            -13%
> for             20964/s       1%        --       -7%        -11%            -12%
> map             22624/s       9%        8%        --         -4%             -5%
> postfix_for     23641/s      14%       13%        4%          --             -1%
> postfix_foreach 23810/s      15%       14%        5%          1%              --
>
>
> в вашем бенчмарке должна быть удивительной разница for и foreach.
> в реальной жизни этой разницы нет.

Возможно, проблема в turbo-boost.

При правильном раскладе, конечно, надо бенчмаркать конкретную
программу на конкретной машине, и лучше через Dumbbench.

В целом я не претендовал на 100% правильность бенчмарка - мой посыл
был в том, что все можно замерить, а не гадать по выдаче гугла.

>
> и на моей машине map немного побыстрее
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
Best regards,
Ilya Chesnokov


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