[Moscow.pm] sum of array

Aleksander Gorohovski angel на feht.dgtu.donetsk.ua
Ср Июн 8 08:33:55 PDT 2011


On Wed, 08 Jun 2011 16:02:29 +0300, Ruslan Zakirov wrote:

> 2011/6/8 Aleksander Gorohovski <angel на feht.dgtu.donetsk.ua>:
>>> comparing array sum with 10 element(s)
>>>              Rate for loop sum util
>>> for loop  627562/s       --     -83%
>>> sum util 3594095/s     473%       --
>>>
>>> comparing array sum with 100 element(s)
>>>              Rate for loop sum util
>>> for loop   96701/s       --     -92%
>>> sum util 1226353/s    1168%       --
>>
>> Премного благодарен.
>> :)
>> Подскажите, а с помощью чего такую
>> сравнительную статистику можно получить / воспроизвести?
>
> use Benchmark qw/cmpthese/;
>
> use List::Util qw(sum);
>
> foreach my $up_to (1, 3, 10, 100) {
>     print "comparing array sum with $up_to element(s)\n";
>
>     my @a = (1 .. $up_to);
>     cmpthese(
>         -3,
>         {
>             'for loop' => sub { my $s = 0; $s+=$_ for @a; return $s },
>             'sum util' => sub { return sum(0, @a ) },
>         }
>     );
> }
>
>> и что означают отрицательные % ? --- это считается плохо/хорошо?
>
> -75% - А медленне B на 75%. То есть A = B*(100-75)/100. Соответственно
> B быстрее А на 300% - B = A*(300/100+1), где A и B скорости
> алгоритмов.

Премного благодарен.

Удивительный расклад :)
Интересно за счёт чего ж
получается такой прирост производительности?

Неужто в List::Util подпрограммы встроены на C
?


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