ホーム ] アプリ ] コントロール ] クラスライブラリ ]

上へ
実行時間計測ラブラリ
EXIF情報ライブラリ
文字式演算
クイックソートライブラリ
多倍長演算ライブラリ
多倍長演算ライブラリU
画像処理ライブラリ

実行時間計測ライブラリ (MeasureTime)

目次

最終更新日:2007/04/26  全面改訂

●概要

 VBのコードの実行時間を実測するクラスライブラリで、時間分解能は、ps 〜 ns である。CPUの基本命令実行時間も計測できる。

●主な特徴

  • Tips で紹介しているシステムタイマによる時間計測でも計測はできるが、こちらは、ハードウェアカウンタを基準にしているので、計測時間が短くて済む。
  • 短時間の単発の事象でも計測ができる。
  • 計測のオーバーヘッドを考慮すれば、CPUの基本命令実行時間も計測できる。
  • しかし、計測上のオーバーヘッド、システムによるオーバーヘッドは絶対に皆無にはできないので、それがあるものとして計測している。

●実行例

●技術解説 

パフォーマンスカウンタ

 ペンティアム以降のCPUでは、内部にハードウェアカウンタを持っている。このカウンタはCPUに供給されるCPUクロックを元にハードウェアでカウントしている。

時間計測の解析

 開始から終了までの掛かった時間を計測するだけであるが、オーバーヘッドや誤差を把握しておく必要がある。

計測技術

 測定に混入する誤差を小さくしたり、バラツキを押さえた測定技術について考察する。

○自動計測方式

 これはやはり便利なので採用する。自動化のためには、被測定部分をライブラリがアクセスできないといけないので、コールバック関数とした。若干コードは増加するが、計測はコールバック関数内で行い、コールバックのオーバーヘッドを排除した。ライブラリでは以下のような処理を行って、最適計測を実現している。

 Tmin は指定された計測時間間隔(秒)

  1. C = 1 とする
  2. C 回ループさせカント値を測定し、これを Tm(これはコールバック関数内の処理) とすれば、
  3. Tm / FrequencyCount ≧ Tmin であれば終了。でなければ、
  4. C = Tmin / (Tm / C) + 1 として、2. に行く(コールバック関数を呼び出す)。