Je veux savoir combien de temps prend une procédure/fonction/ordre pour se terminer, à des fins de test.
C'est ce que j'ai fait mais ma méthode est erronée car si la différence de secondes est de 0, je ne peux pas retourner les millisecondes écoulées :
Remarquez que la valeur de la mise en veille est de 500 ms, les secondes écoulées sont donc égales à 0, ce qui ne permet pas de renvoyer des millisecondes.
Dim Execution_Start As System.DateTime = System.DateTime.Now
Threading.Thread.Sleep(500)
Dim Execution_End As System.DateTime = System.DateTime.Now
MsgBox(String.Format("H:{0} M:{1} S:{2} MS:{3}", _
DateDiff(DateInterval.Hour, Execution_Start, Execution_End), _
DateDiff(DateInterval.Minute, Execution_Start, Execution_End), _
DateDiff(DateInterval.Second, Execution_Start, Execution_End), _
DateDiff(DateInterval.Second, Execution_Start, Execution_End) * 60))
Quelqu'un peut-il me montrer une meilleure façon de procéder ? Peut-être avec un TimeSpan
?
La solution :
Dim Execution_Start As New Stopwatch
Execution_Start.Start()
Threading.Thread.Sleep(500)
MessageBox.Show("H:" & Execution_Start.Elapsed.Hours & vbNewLine & _
"M:" & Execution_Start.Elapsed.Minutes & vbNewLine & _
"S:" & Execution_Start.Elapsed.Seconds & vbNewLine & _
"MS:" & Execution_Start.Elapsed.Milliseconds & vbNewLine, _
"Code execution time", MessageBoxButtons.OK, MessageBoxIcon.Information)