frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

リファレンスがんばる。

以前「リファレンスを使うと。」にて

無名ハッシュのリファレンスと

普通のハッシュで、

処理速度を比較しましたが。

あれはたぶんリファレンスの間違った使い方で

本来、リファレンスは、いろいろ効率よくしてくれるはず。

そこで、改めてリファレンスを使うと速いって事を証明するために

実験してみることにしたのでした。

main

#/usr/bin/perl -w

use 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 もの差をつけて、速かったのでした。

うん、納得。