Thread permutation (31 answers)
Opened by esskar at 2006-09-11 12:30

topeg
 2006-09-15 11:22
#69652 #69652
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ich habe das mal mit dem Code getestet:
Code: (dl )
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);
}

Die Ergebnisse
Code: (dl )
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% --

Für sich alleine getestet ist "push" doch am schnellten, immer.
Warum ich vorher anere Ergebnisse hatte kann nur daran liegen, das ich nur die vorherigen Codestücke modifieziert hatte, und es da Konvergenzen gab.

View full thread permutation