リファレンスがんばる。
以前「リファレンスを使うと。」にて
無名ハッシュのリファレンスと
普通のハッシュで、
処理速度を比較しましたが。
あれはたぶんリファレンスの間違った使い方で
本来、リファレンスは、いろいろ効率よくしてくれるはず。
そこで、改めてリファレンスを使うと速いって事を証明するために
実験してみることにしたのでした。
main
#/usr/bin/perl -wuse strict;
use Time::HiRes;
my $checkTimes = $ARGV[1] =~ /^[0-9]+$/ ? $ARGV[1] : 100;
my $timecheck = Time::HiRes::time;
my $allData = "";
実験パターン・呼び出し側
print Time::HiRes::time - $timecheck."\n";
exit;
実験パターン・呼び出され側
パターン1
呼び出し側
for (1..$checkTimes) {
&addString(\$allData);
}
呼び出され側
sub addString(\$) {
my $allData = shift;
$$allData .= "test";
}
パターン2
呼び出し側
for (1..$checkTimes) {
$allData = &addString($allData);
}
呼び出され側
sub addString($) {
my $allData = shift;
$allData .= "test";
return $allData;
}
これを$checkTimesを100にして
交互に呼び出すのを100回やって平均値を出したら…
■パターン1
0.000229073
■パターン2
0.000588298
…結果、予想通り、パターン1が
0.000359225 もの差をつけて、速かったのでした。
うん、納得。