- - PR -
perlで1/100000秒単位の正確な処理時間を計算したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-08-17 14:10
keiと申します。
perlスクリプトで、モジュールの処理時間を計測するのに、以下のようなコードを 書いているのですが、たまに$diff_timeがマイナス値になってしまったりします。 正確な処理時間を算出する方法って、他にもっとスマートな方法はありますでしょうか? <CODE> #システム時間取得(`00:00:00 1970-01-01 UTC' からの経過時間[秒] ) my $start_second = `date +"%s"`;#秒 my $start_second_nano = `date +"%N"`;#ナノ秒 ★モジュール起動 #システム時間取得(`00:00:00 1970-01-01 UTC' からの経過時間[秒] ) my $end_second = `date +"%s"`;#秒 my $end_second_nano = `date +"%N"`;#ナノ秒 #経過時間計算 my $diff_second = $end_second - $start_second; my $diff_second_nano = $end_second_nano - $start_second_nano; my $diff_time_org = $diff_second + ($diff_second_nano / 1000000000); $diff_time = sprintf("%.6f",$diff_time_org); print "処理時間:$diff_time\n"; </CODE> |
|
投稿日時: 2006-08-17 14:31
OSの割込み処理の精度として無理では 数msec はかかりますから。
リアルタイムOSでも 数10μsec かな。 MPU のハードはクロック基準の計時レジスタがあるが、一般向き? パフォーマンス測定では、繰り返し実行して、その平均を取るのが普通です。 =================== あるいは、プロファイル用ソフトを導入して使う。perl用は? [ メッセージ編集済み 編集者: MMX 編集日時 2006-08-17 14:42 ] |
|
投稿日時: 2006-08-17 16:38
次のモジュールのいずれかが使えるかもしれません。
Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers - search.cpan.org DateTime::HiRes - Create DateTime objects with sub-second current time resolution - search.cpan.org ちなみに、これらは QueryPerformanceCounter perl - Google 検索 で検索して、 さらにThe CPAN Search Siteで検索して見つけました。 |
|
投稿日時: 2006-08-18 10:09
ちいにぃ様
ご回答ありがとうございます。 Time::HiResモジュールが使えそうですね。 ちょっといろいろ試してみたいと思います。 ありがとうございました。 |
1