Hallo Community,
an vielen Stellen und in Lehrbüchern werden Typeglobs wegen ihres Performancevorteils gelobt. Ich wollte das mal genau wissen und hab folgendes Skript aufgesetzt:
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
#!Perl -w
use Benchmark;
$repetitions = 1000000;
@testArray = (22, 34, 433, 123, 435, 66);
sub typeglobs {
local *kopie = shift;
foreach (@kopie) {
$_ *= 2;
}
}
sub references {
my $rarray = shift;
foreach (@$rarray) {
$_ *= 2;
}
}
print "Ueber Referenzen:\n";
timethis($repetitions, "references(\@testArray)");
print "\n\nUeber Typeglobs:\n";
timethis($repetitions, "typeglobs(*testArray)");
Beide Funktionen (typeglobs und references) machen hier das selbe, nämlich die Multiplikation jedes Arrayeintrages mit 2.
Ich war sehr überrascht, dass meine typeglobs-Funktion fast drei mal so lang braucht, wie die references-Funktion.
Vielleicht habt ihr ja andere Ergebnisse? Oder ist mein Code schlicht und einfach falsch?
Viele Grüße
Benedikt