Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

DiagnosticsユニットのTStopwatch。

時間計測用。かなり目立たない位置にいるけど、こんなのが追加されてた(ひょっとしたら2009からあったかもしれないけど)。
C#使いの人はすぐに分かっただろうけど、どうやら.NETのStopwatchクラスの移植みたい(ちゃんと確認したわけじゃないけど)。少なくとも主なメソッドなんかはそのまま。まぁでもDelphiでパフォーマンスカウンタを使った時間計測が手軽にできるというのは便利なことに違いはないので、どんどん使っちゃえばいいと思う。
コンポーネントではないので自分でユニット追加して生成(というか初期化)する必要があるけど、Createした後、Start→Stopメソッドを呼び出すだけでElapsedプロパティに時間が入ってくれるので*1、大した手間じゃないはず。StartNewメソッドを呼べばCreateとStartが同時に行えるし。さらにDelphi版は(恐らく廃棄の問題から)クラスではなくレコードとして実装されてるんで、

with TStopwatch.StartNew do
try
  // 時間計測する処理
finally
  Stop;
  ShowMessage(Elapsed);
end;

こんな風に書けて便利。ちなみにElapsedプロパティはTTimeSpan型(レコード)で、ShowMessage時に変換が必要に思えるんだけど、string型への暗黙の変換を行う演算子オーバーロードがあるのでそのまま渡せる('00:00:02.0092512'みたいに表示される)。

*1:正確に言えばStopを呼ばなくても(計測中でも)Elapsedを参照した時点での経過時間が取得できる