[Cascavel-pm] Somar elementos numericos de um array
Flavio S. Glock
fglock em gmail.com
Terça Abril 10 05:29:25 PDT 2007
Em 10/04/07, Igor Sutton Lopes<igor.sutton em gmail.com> escreveu:
> Oi,
>
> On Apr 10, 2007, at 8:12 AM, Luis Motta Campos wrote:
>
> > Aqui tem uma sugestão
> > genérica, que é complicada de ler, não serve para código de produção
> > mas é educativa.
> >
[...]
> O resultado:
>
> Rate eval for map sum
> eval 28528/s -- -93% -94% -99%
> for 399865/s 1302% -- -14% -85%
> map 464529/s 1528% 16% -- -83%
> sum 2738845/s 9500% 585% 490% --
>
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.';
}',
}
);
----
- Flavio S. Glock
Mais detalhes sobre a lista de discussão Cascavel-pm