処理時間の短縮を図る場合に、処理にどのくらいの時間が掛かっているのかを計測する場合があります。
基本的には秒単位での時間計測で問題無い場合は、計測対象の処理の前で時刻を Now() で取得し、 処理終了後に再度 Now() で取得した時刻の差を求めることで計測ができます。
処理時間の計測その1
Private Sub TimeMeasure1_Click(sender As Object, e As EventArgs) Handles TimeMeasure1.Click
'開始時刻退避
Dim start As DateTime = Now
'各種の処理の代わりとしての待ち時間(10秒)
System.Threading.Thread.Sleep(10000)
'処理時間を計算(現在時刻-開始時刻)
Dim timespan As TimeSpan = Now - start
MsgBox(String.Format("処理時間 = {0}秒", timespan.TotalSeconds))
End Sub
更に、高精度な時間を計測したい場合には、 Stopwatch クラスを用います。
以下のソースでは、 Stopwatch クラス生成後、計測対象処理の直前で Start メソッドで計測開始し、 計測対象処理の直後で Stop メソッドで計測終了します。
処理時間の計測その2
Private Sub TimeMeasure2_Click(sender As Object, e As EventArgs) Handles TimeMeasure2.Click
'時間計測を「Stopwatch」クラスで行う
Dim stopwatch As New Stopwatch()
'計測を開始
stopwatch.Start()
'各種の処理の代わりとしての待ち時間(10秒)
System.Threading.Thread.Sleep(10000)
'計測を終了
stopwatch.Stop()
Dim str As String = ""
str &= String.Format("経過時間の合計 = {0}", stopwatch.Elapsed) & vbCrLf
str &= String.Format("ミリ秒単位の経過時間の合計 = {0}", stopwatch.ElapsedMilliseconds)
MsgBox(str)
End Sub
関連する記事
⇒スレッドタイマの使い方 :[System.Threading.Timer,Delegate,Invoke]⇒スレッドタイマの使い方(イベント処理が時間が掛かる場合):[System.Threading.Timer,Delegate,Invoke]
⇒引数があるスレッドの実行について(パラメータ付きスレッド)
⇒スレッドを停止させる方法について
PR
コメント