frei

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

myするタイミング。

昨晩やってみたかった実験、

レキシカル変数を

宣言するタイミング(場所)次第で

速度にどれくらい変化があるか、調べてみた。

main

#/usr/bin/perl -w

use Time::HiRes;

my $checkTimes = $ARGV[1] =~ /^[0-9]+$/ ? $ARGV[1] : 100;

my $timecheck = Time::HiRes::time;

実験するパターン

print Time::HiRes::time - $timecheck."\n";

exit;

パターン1

my ($allData, $tmpData);

for (1..$checkTimes) {

$tmpData = "test";

$tmpData =~ s/t/T/g;

$allData .= $tmpData;

};

パターン2

my $allData	= "";

for (1..$checkTimes) {

my $tmpData = "test";

$tmpData =~ s/t/T/g;

$allData .= $tmpData;

}

これを$checkTimesを10000000000にして

交互に呼び出すのを10回やって平均値を出したら…

■パターン1

 0.000305295

■パターン2

 0.000322843

…結果、総合するとパターン1のが、

0.0000175476 速かったのでした。

レキシカル変数の有効範囲が狭い方がいいのか、

範囲は広いが、何度も変数を生成しなくて済む方がいいのか、

後者が速いだろうなぁ…と思いつつも、

メモリが解放されるタイミングとか想像すると

前者も場合によっては良いのかも?とか思って、結構迷う事がありましたが。

$tmpData に突っ込む値を、もっと大きくしても

同じ結果でした。