BENCHMARK(3) USER COMMANDS BENCHMARK(3) NAME Benchmark - コードの実行時間のベンチマークを行なう timethis - コードを何回か実行する timethese - いくつかのコードを何回か実行する timeit - コードを実行し、時間を計測する SYNOPSYS timethis ($count, "code"); timethese($count, { 'Name1' => '...code1...', 'Name2' => '...code2...', }); $t = timeit($count, '...other code...') print "$count loops of other code took:",timestr($t),"\n"; DESCRIPTION Benchmark モジュールは、コードの実行時間を計測する手助けをす るルーティン群をカプセル化するものです。 メソッド new 現在時刻を返します。 たとえば: use Benchmark; $t0 = new Benchmark; # ... ここにコードを置きます ... $t1 = new Benchmark; $td = timediff($t1, $t0); print "the code took:",timestr($dt),"\n"; debug $Benchmark::debug フラグを設定することによって、デ バッグを許可したり、許可を解除したりします: debug Benchmark 1; $t = timeit(10, ' 5 ** $Global '); debug Benchmark 0; 標準エクスポート 以下のルーティンは、Benchmark モジュールを使うときに、現在の 名前空間へエクスポートされます: timeit(COUNT, CODE) 引数: COUNT は、ループの実行回数で、CODE は実行す Perl module manpages Last change: Release 5.0 Patchlevel 00 1 BENCHMARK(3) USER COMMANDS BENCHMARK(3) るコードです。 CODE には、コードを含む文字列、実 行するサブルーティンへのリファレンス、名前を key、 別の CODE 記述を value とするハッシュへのリファレ ンスを記述できます。 副作用: 標準出力にゴミを書きます。 返却値: Benchmark オブジェクトを返します。 timethis timethese timediff timestr オプションエクスポート 以下のルーティンは、特にインポートを要求するときに、現在の名 前空間へエクスポートされます: clearcache clearallcache disablecache enablecache NOTES データは、time 関数や times 関数による値のリストとして ($real, $user, $system, $children_user, $children_system) (各々の繰り返しごとではなく) ループ全体を秒数で計測して蓄え られます。 計時は、time(3) と times(3) を使って行なわれます。 コードは、呼びもとのパッケージで実行されます。 デバッグを有効にするには、 $Benchmark::debug = 1; とします。 空ループ (繰り返し数は同じですが、空のループ) の時間が、実際 のループの時間から差し引かれます。 計算された空ループの実行時間は、繰り返しの数をキーとして、キ Perl module manpages Last change: Release 5.0 Patchlevel 00 2 BENCHMARK(3) USER COMMANDS BENCHMARK(3) ャッシングされます。 キャッシングは、以下のようなサブルーテ ィンの呼び出しで制御することができます。 clearcache($key); clearallcache(); disablecache(); enablecache(); INHERITANCE Benchmark は、Exporter からは当然継承を行なっていますが、そ の他のクラスからは継承を行ないません。 CAVEATS 実際の時間の計時は、time(2) を使って行なわれますので、精度は 秒程度しかありません。 短いテストでは、結果が負数になる場合があります。 perl では、 空ループの方が短いテストよりも時間がかかる場合があるからです。 timethis(100,'1'); としてみてください。 空ループのシステム時間は、実際のコード を含むループのシステム時間よりも多少多くかかることがあるため、 最終的に差がゼロより小さくなることがあるのです。 もっと、(特にスタイルやフォーマットの) ドキュメントが必要 :-( AUTHORS Jarkko Hietaniemi <Jarkko.Hietaniemi@hut.fi>, Tim Bunce <Tim.Bunce@ig.co.uk> MODIFICATION HISTORY September 8th, 1994; by Tim Bunce. Perl module manpages Last change: Release 5.0 Patchlevel 00 3