[Moscow.pm] Сравнение языков

Михаил Монашёв postmaster на softsearch.ru
Вт Фев 10 04:33:37 PST 2015


Здравствуйте, 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:postmaster на softsearch.ru



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