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