[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