[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