[Cascavel-pm] Somar elementos numericos de um array

Daniel Ruoso daniel em ruoso.com
Terça Abril 10 06:27:08 PDT 2007


Ter, 2007-04-10 às 09:29 -0300, Flavio S. Glock escreveu:
> Não subestime o eval - dependendo como você usá-lo ele pode ser muito
> rápido (e evita o uso de XS em alguns casos):
>           Rate  for  map eval  sum
> for   365652/s   -- -13% -78% -86%
> map   421556/s  15%   -- -74% -83%
> eval 1633707/s 347% 288%   -- -36%
> sum  2540158/s 595% 503%  55%   --
> ----
> use strict;
> use warnings;
> use List::Util qw(sum);
> use Benchmark qw(:all);
> my @numbers = ( 1 .. 10 );
> cmpthese(
>     -3,
>     {
>         'map' => sub {
>             my $result;
>             map { $result += $_ } @numbers;
>         },
>         'for' => sub {
>             my $result;
>             $result += $_ for @numbers;
>         },
>         'sum' => sub {
>             my $result = sum(@numbers);
>         },
>         'eval' => eval 'sub {
>             local $" = "+";
>             my $result;
>             $result = '. em numbers.';
>           }',
>     }
> );

Hmmm... sei não mas acho que você não está sendo propriamente justo
nessa comparação... no caso do eval você tem uma função que não trabalha
nem sequer com uma lista, mas faz uma simples operação de soma, enquanto
os outros trabalham com uma lista que em potencial aceitam uma lista que
tem valores diferentes.

daniel



Mais detalhes sobre a lista de discussão Cascavel-pm