Comparer le temps d'exécution de 2 routines.
Bonjour.
Problème récurrent : je veux comparer la rapidité de deux routines, j'utilise Stopwatch et le code qui suit avec mes deux routines à tester. C'est pour voir si les calculs avec des Integers, des longs, des short est plus ou moins rapide (Les articles sur le web datent un peu) . Ici j'ai la comparaison d'addition d'un integer ou d' un Short.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
Dim b As Integer
Dim c As Integer
Dim i As Integer
Dim s As Short
Dim sw As New Stopwatch
sw.Start()
' Ici routine 1
For c = 1 To 30000
i = 1
For b = 0 To 250
i = i + 1
Next
Next
sw.Stop()
Label1.Text = sw.ElapsedTicks.ToString()
Dim sw1 = New Stopwatch
sw1.Start()
' Ici routine 2
For c = 1 To 30000
s = 1
For b = 0 To 250
s = s + 1
Next
Next
sw1.Stop()
Label2.Text = sw1.ElapsedTicks.ToString() |
Le résultat est n'importe quoi!!
Même si les 2 routines sont identiques et utilisent par exemple toutes les 2 des integers. La première routine est systématiquement plus longue.
J'ai pris soin d'être en mode Release, de faire tourner le code plusieurs fois (la première fois cela 'devrait être plus longue' puisqu'il y a compilation JIT.
J'ai bien compris la cause de cela, mais comment y remédier?
Il est dit sur un forum de mesurer les processus, comment?
Je voulais aussi utiliser un thread avec une priorité importante mais je ne sais pas récupérer les temps à la fin de la routine.
Y a t-il un moyen sur de mesurer? Le Framework fournit il d'autres méthodes?
Merci de votre aide