2004年03月06日

処理中に経過実時間の取得

成功しても失敗しても全く同じ結果を返してくれるへっぽこ装置操作コマンドを何とかしなければいけなくなりました。
ただ、幸いにも失敗の場合は5秒未満、成功の場合は15秒前後でプログラムが停止してくれるので、実行実時間を見れば成功したか失敗したかどうか判別するWrapparが書けそうです。

他との整合性の都合で、今回はPerlを使うこととなりましたが、この場合、普通に考えると処理前のtime関数の値を変数に格納しておいて処理後の時間と比較するのが楽そうです。

しかし、操作間違うと装置が壊れかねないので1秒単位の時間分解能ではどうも不安で、もうちょっと高い時間分解能で実時間をはかれないかと思って探してみたら、ありました。

とりあえず、標準では入っていないのでまず
perl -MCPAN -e shell
cpan> install Time::Elapse
でさっくりインストール
次に
$ perl -e 'use Time::Elapse; Time::Elapse->lapse(my $now); sleep 10; print $now;'
なんて言うスクリプトを実行してみると見事に「00:00:10.000000」という結果が帰ってきました。
表示的には100万分の1秒の分解能があるようですが、CPUの状態に応じて精度が変わってくる用です。
それでも1000分の1秒程度の時間解像度があるようなので今回の処理には十分であるので採用することにしました。

探せば便利なモジュールっていろいろあるものですね。

Posted by Takuchan at 2004年03月06日 00:58 | トラックバック(0)