名前¶
Time::Elapse - タスクの実行中、時間を監視するのに便利なPerl拡張
説明¶
Time::Elapseは1つのメソッド: lapse を持った非常にシンプルなクラスです
基本的にlapseメソッドは変数の'頭のなかを空っぽにさせ'、 内部的にそれが溜め込んでいるかもしれない値をすべて放棄させます。 (宇宙人が映画の中ででやっているようなことによく似ています)、 そして同時に現在の時刻をその中に格納させます。それから変数の値に アクセスするときにはいつでも、内部の'宇宙人'は、あなたが変数を 初期化したときとそれを出力したときとの時刻の差をフォーマットし、 それを返します。(変数が保持している値があればそれもつけて)。 :-) あなたがそれを出力する度に、更新された差を、変数そのものの内部に 隠されたメソッドによって得ることになります。出力は HH:MM:SS.000000[マイクロ秒単位]にフォーマットされます。
率直に言ってtime()以上のことはしていません。しかしもう一度、最も単純なことは そうそうあることじゃありません。 :-)
これが本当にやっていることは、他のだれもが手で設定していたことがある計算を 賢い方法で隠し、そして1行の出力でも、他の文字列に埋め込んでもうまくいく ように合理的にフォーマットされた出力を生成していることなのです。
概要¶
使用方法¶
Elapseの利用方法は単純そのものです:
use Time::Elapse;
# プログラムのどこかで...
Time::Elapse->lapse(my $now);
# あるいはこのようにすることもできます:
# Time::Elapse->lapse(my $now = "processing");
#...プログラムの残りを実行
print "Time Wasted: $now\n";
途中で説明を更新し、タイム・カウンタをリセットするためには、 プログラムの途中のどこかで単純に
$now = "parsing";
と変数に代入してください。新しい値が格納され、元の時刻は現在の 時刻に置き換えられます。
出力のサンプル¶
上記のコードを使うと、出力は以下のようになります:
Time Wasted: 00:00:05.565763
あるいは
Time Wasted: 00:00:03.016700 [processing]
(さらに出力)
Time Wasted: 00:00:02.003764 [parsing]
使用例のコードの追加¶
ファイルのNet::FTPダウンロードの繰り返しの間でも、各ファイルの ダウンロードの所要時間を表示するために、これを使うことができます。
foreach my $file (@files_to_download)
{
# $fileからローカル・ファイル名を取り出し
# ...
Time::Elapse->lapse(my $now = "Downloading $localfile.");
$ftp->get($file, $localfile) or carp("### Could not download $file! $!") and next;
print "Done. Elapsed : $now\n";
# ...
}
これは複数のソースから多くのデータを処理するときにも、便利なテクニックでしょう。
いわゆる'バグ'¶
Elapseは1秒未満の粒度の時刻を提供します。しかしその処理そのもの効用に よって正確さはちょっとした妨害を受けるために、時刻の値はほぼ正確な値に しまいます。 それはほぼ0.00001 から 0.0009 秒の間ぐらいです (これはシステムとその時点で実行されているプロセスの数によります :-)
#!/usr/bin/perl
use Time::Elapse;
Time::Elapse->lapse(my $now = "testing 0");
for (1 .. 5)
{
print "$now\n";
$now = "testing $_";
}
print "$now\n";
(PowerMac G3/400 で MacPerl 5.004 を実行した結果
on MacOS 8.6)
00:00:00.000937 [testing 0]
00:00:00.000743 [testing 1]
00:00:00.000344 [testing 2]
00:00:00.000327 [testing 3]
00:00:00.000358 [testing 4]
00:00:00.000361 [testing 5]
(AMD Duron 1.1Ghz で Perl 5.8.0 を実行した結果
on RedHat Linux 8.0)
00:00:00.000079 [testing 0]
00:00:00.000035 [testing 1]
00:00:00.000018 [testing 2]
00:00:00.000016 [testing 3]
00:00:00.000016 [testing 4]
00:00:00.000020 [testing 5]
エクスポート¶
デフォルトではありません。
作者¶
作者¶
Scott R. Godin, <[email protected]>
最終更新日時¶
Fri Aug 8 01:12:56 EDT 2003
著作権(COPYRIGHT)¶
Copyright (c) 2001 Scott R. Godin. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
参考資料¶
翻訳者¶
川合 孝典([email protected])