Perlでベンチマークを取る

仕事で使ったのでメモ。

use Benchmark ':all';

my $testtimes = 999;
my $looptimes = 99999;

sub test1 {
	my $a = '';
	foreach my $buf (0..$looptimes) {
		$a .= 'abcdefghijklmnopqrstuvwxyz';
	}
}
sub test2 {
	my $a = '';
	my @list = ();
	foreach my $buf (0..$looptimes) {
		$list[$buf] = 'abcdefghijklmnopqrstuvwxyz';
	}
	$a = join('', @list);
	'';
}

cmpthese(
	timethese(
		$testtimes, 
		{
			'TEST1' => test1,
			'TEST2' => test2,
		}
	)
);


そう言えば、「Perlデータマンジング」に記載あったと思う。やっぱり、本だけでは身についてなかったことが証明された。


結果の見方。
Benchmark モジュールの使い方、結果情報の読み方