2011年8月8日

TStopwatch

Delphi 2010でDiagnosticsユニットが追加され、システムが高分解能パフォーマンスカウンタをサポートしていればQueryPerformanceCounter (ja)を利用し、サポートしていない場合はGetTickCount (ja)で代用することでストップウォッチ機能を(高分解能パフォーマンスカウンタ機能の有無に関わらず)統一的に扱うことができるTStopwatchレコードが使用できるようになっています。

TStopwatchの注意点としては
  • TStopwatchはレコード型であるにもかかわらず内部状態の明示的な初期化のためにconstructorclass function Createまたはclass function StartNewの明示的な呼び出しが必要(デストラクタの呼び出しは不要明示的に定義されたコンストラクタ、デストラクタは存在しない)。
  • 経過時間を示すElapsed/ElapsedMilliseconds/ElapsedTicksプロパティはStopメソッドで停止した状態でないと更新された値を取得できない計測状態、停止状態に関わらず正しい値を取得できる。
といったところでしょうか。基本的にはユニット名(Diagnostics=診断)のとおりデバッグ時などのパフォーマンス計測用と考えればよいと思います。

元ねたはMarco CantuさんDelphi 2010 Handbook

2011/09/20追記: TStopwatchその2に書いたように、状態に関わらずElapsed/ElapsedMilliseconds/ElapsedTicksプロパティは正しい値を取得できること、またCreateはconstructorではなくclass functionであることなど記述を修正しました。

0 件のコメント: