Leser: 3
|< 1 2 3 4 >| | 32 Einträge, 4 Seiten |
for (my $i = 1; $i <= 2 ** $count; ++$i) {
2 ** $count
1 2 3 4 5 6
sub fbhp { [...] my @status; my $count = $#elements; push @status, 0 for (0..$count); [...]
my @status = (0) x scalar(@elements)
1
2
3
4
5
C:\community>perl bench.pl
Rate thorium renee
thorium 1131/s -- -57%
renee 2656/s 135% --
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
use Benchmark qw(:all);
use strict;
use warnings;
my @elements = (1) x 1000;
cmpthese( 10000, {
'renee' => sub {my @status = (0) x scalar(@elements)},
'thorium' => sub {my @status;
my $count = $#elements;
push @status, 0 for (0..$count); }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sub binhyphen3
{
my ($str,$sep) = @_;
my @lst=();
my @ret=();
map{push(@lst,$_); push(@lst,''); }split(/$sep/,$str);
pop(@lst);
my $lang=@lst;
my $i=1;
while($i<$lang)
{
for($i=1; $i<$lang; $i+=2)
{
if($lst[$i] eq '')
{
$lst[$i]=$sep;
last;
}
$lst[$i]='';
}
push(@ret,join('',@lst));
}
return @ret;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw/cmpthese/;
my $lng = shift(@ARGV) || die "Usage: $0 length [-count]\n";
my $cnt = shift(@ARGV) || "-10";
cmpthese ($cnt,
{
'Version 1' => sub { push_fast($lng) },
'Version 2' => sub { cnt_fast1($lng) },
'Version 3' => sub { cnt_fast1($lng) }
}
);
sub push_fast
{
my $l=shift(@_);
my @arr;
map{ push(@arr,"TEST") }(0..$l);
}
sub cnt_fast1
{
my $l=shift(@_);
my @arr=(0)x$l;
my $c=0;
map{ $arr[$c++]="TEST" }(0..$l);
}
sub cnt_fast2
{
my $l=shift(@_);
my @arr;
$#arr = $l;
my $c=0;
map{ $arr[$c++]="TEST" }(0..$l);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
> ./array_fast_test.pl
Usage: ./array_fast_test.pl length [-count]
> ./array_fast_test.pl 100 -10
Rate Version 2 Version 3 Version 1
Version 2 8548/s -- -1% -13%
Version 3 8599/s 1% -- -12%
Version 1 9780/s 14% 14% --
> ./array_fast_test.pl 1000 -10
Rate Version 3 Version 2 Version 1
Version 3 867/s -- -0% -13%
Version 2 868/s 0% -- -13%
Version 1 995/s 15% 15% --
> ./array_fast_test.pl 10000 -10
Rate Version 2 Version 3 Version 1
Version 2 53.3/s -- -0% -15%
Version 3 53.4/s 0% -- -15%
Version 1 63.0/s 18% 18% --
> ./array_fast_test.pl 100000 -10
Rate Version 2 Version 3 Version 1
Version 2 5.05/s -- -0% -20%
Version 3 5.06/s 0% -- -20%
Version 1 6.34/s 25% 25% --
> ./array_fast_test.pl 1000000 -10
s/iter Version 2 Version 3 Version 1
Version 2 2.05 -- -1% -20%
Version 3 2.03 1% -- -19%
Version 1 1.64 25% 24% --
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw/cmpthese/;
my $lng = shift(@ARGV) || die "Usage: $0 length [-count]\n";
my $cnt = shift(@ARGV) || "-10";
cmpthese ($cnt,
{
'Version 1' => sub { push_map($lng) },
'Version 2' => sub { cnt_fast1($lng) },
'Version 3' => sub { push_for($lng) }
}
);
sub push_map
{
my $l=shift(@_);
my @arr;
map{ push(@arr,"TEST") }(0..$l);
}
sub cnt_fast1
{
my $l=shift(@_);
my @arr=("Test")x$l;
}
sub push_for
{
my $l=shift(@_);
my @arr;
push(@arr,"TEST") for(0..$l);
}
1
2
3
4
5
~/entwicklung 54> perl bench.pl 100
Rate Version 1 Version 3 Version 2
Version 1 4168/s -- -21% -53%
Version 3 5274/s 27% -- -41%
Version 2 8899/s 113% 69% --
|< 1 2 3 4 >| | 32 Einträge, 4 Seiten |