Je veux savoir combien de temps une procédure / fonction / commande prend pour terminer, à des fins de test.
C'est ce que j'ai fait mais ma méthode est fausse car si la différence de secondes est de 0, je ne peux pas retourner les millisecondes écoulées:
Notez que la valeur de veille est de 500 ms, donc les secondes écoulées sont égales à 0, alors il ne peut pas retourner les 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 faire cela? 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)
DateTime.Now
raison de problèmes d'heure d'été et de fuseau horaire. S'il vous plaît lire mon article de blog sur ce sujet même