今回はDelphi/400でプログラムの処理経過時間を調べる方法をご紹介致します。
処理時間を計測することができれば、パフォーマンスなどの調査を行う際に、
どこで時間がかかっているかなど詳しい検証に役立ちます。
例えばSELECT文実行に掛かる時間を表示する方法について考えてみましょう。
Now関数やTime関数で、24時間制で表されるその日の経過時間(Double)を取得できます。
- Now関数:PCの現在日時を取得(整数部が日付、小数部が時刻)
- Time関数:PCの現在時刻を取得(整数部なし、小数部が時刻)
SQL文を実行する前と後にそれぞれの時間を取得します。
経過時間はその前と後を引き算した「差」で求めることができます。
経過時間をEditに表示するには、FormatDateTime関数を使用して、文字型に変換します。
コーディング例は次のようになります。
procedure TForm1.Button1Click(Sender: TObject); var STM : TTime; ETM : TTime; begin // 開始時刻 STM := Time; // ★★時間を計測したい処理★★(ここではSQL文実行) FDQuery1.Active := True; // 終了時刻 ETM := Time; // 処理時間の表示 Edit1.Text := FormatDateTime('hh:nn:ss:zzz', ETM - STM); //SQL文CLOSE FDQuery1.Active := False; end;
上記ではFormatDateTimeの指定で、Editに「時:分:秒:ミリ秒」を表示するようにしています。
ここではEdit1に結果を出力をしていますが、
メッセージで表示したり、処理単位で時間を測定してファイルに出力したりなど、
組み込み方は応用も効きますのでご活用ください。
(ミガロ.情報マガジン「MIGARO News!!」Vol.201 2017年8月号より)