perl Benchmarkモジュール

#オブジェクト指向モジュールの一つBenchmarkを使ってベンチマークのテストを行う

#ベンチマーク
#benchmark.pl

#モジュール呼び出し
use Benchmark;

#1つ目のベンチマークオブジェクト
$before_time = new Benchmark;

#500000カウントの計算
&recursive(50000);

#2つ目のベンチマークオブジェクト
$after_time = new Benchmark;

#2つのベンチマークから結果を求める
$diff = timediff($after_time, $before_time);

#表示
print "結果:", timestr($diff), "\n";

#時間を計測するための再帰呼び出し
sub recursive{
    my($number) = @_;

    #1つずつカウンタを減らして0になるまで再帰呼び出しを行う
    &recursive(--$number) if ($number);
}

#$before_timeと$after_timeという2つのオブジェクトをBenchmarkクラスから
#生成している。それぞれのオブジェクトは挙動や変数の管理が独立しており、
#相互に干渉しない。次に、timediff(2つのBenchmarkオブジェクトの間の時間
#の差を返すサブルーチン)とtimestr(timediffサブルーチンの戻り値オブジェ
#クトを文字列に変換するサブルーチン)という2つのサブルーチンを使ってお
#互いのオブジェクトを比較し表示する。

#実行結果
# 結果: 1 wallclock secs ( 0.03 usr +  0.01 sys =  0.04 CPU)

初めてのPerl 第6版

初めてのPerl 第6版