[Moscow.pm] map vs foreach
Ivan Petrov
i.petro.77.00 на gmail.com
Ср Ноя 25 01:39:34 PST 2015
> 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.
в реальной жизни этой разницы нет.
и на моей машине map немного побыстрее
Подробная информация о списке рассылки Moscow-pm