Здравствуйте, vividsnow.

> perl+pdl:

> ~$ /usr/bin/time -f 'mem: %MKb' perl -MPDL::LiteF -MBenchmark=countit -e '
> my $s = sequence long, 1e7;
> printf "time: %dms sum: %d\n", 1e3/countit(1, sub { $s->dsum })->iters, 
> $s->dsum'

Поставил Strawberry Perl с PDL и запустил вот этот код:

#!/usr/bin/perl

use strict;
use warnings;
use PDL::LiteF;
use Benchmark;

my $s = sequence long, 1e7;
printf "time: %dms sum: %d\n", 1e3/Benchmark::countit(1, sub { $s->dsum 
})->iters, $s->dsum;

C:\Temp>perl 1.pl
time: 26ms sum: 49999995000000

занимает 47.7Mb оперативки и грузит только одно ядро.

И второй вариант затестил:
#!/usr/bin/perl

use strict;
use warnings;
use Benchmark qw/ timethese /;
use List::Util qw/ sum /;
use integer; 

my @arr = 0 .. 10_000_000 - 1;

timethese(10, { FUNC => sub { sum @arr } });

C:\Temp>perl 2.pl
Benchmark: timing 10 iterations of FUNC...
      FUNC:  2 wallclock secs ( 2.00 usr +  0.00 sys =  2.00 CPU) @  5.01/s 
(n=10)

т.е. где-то 200ms

Памяти занимает 641Mb и грузит только одно ядро.

-- 
С уважением,
 Михаил                          mailto:[email protected]

-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить