C'est-à-dire, 0 ou 1 tick.Citation:
Entre 0 et 15.625 ms pour la boucle FOR !!!!
Pour une meilleure précision de la mesure:
Code:
1
2
3
4
5 private int diffTimeInMilliSeconds(DateTime start, DateTime end) { return (end-start).Milliseconds; }
Version imprimable
C'est-à-dire, 0 ou 1 tick.Citation:
Entre 0 et 15.625 ms pour la boucle FOR !!!!
Pour une meilleure précision de la mesure:
Code:
1
2
3
4
5 private int diffTimeInMilliSeconds(DateTime start, DateTime end) { return (end-start).Milliseconds; }
Bonjour
ben non, c'est pas plus précis, je suis toujours entre 0 et 15Citation:
Pour une meilleure précision de la mesure:
les millisecondes ne dépendent-elles pas du tick ??
(pause ....)
bon je crois que j'ai ma réponse ici
source : http://stackoverflow.com/questions/3...cond-precisionCitation:
Windows does not want to waste electricity by updating the system clock 1000 times per second, so the default is to only update it 60-100 times per second. If you set the multimedia timer to 1ms, you can get 1ms resolution from the clock, but that's not recommended.
bon ben tant pis, on peut pas être plus précis (à moins changer ce "multimedia timer", d'ailleurs comment on fait ?? :D)
merci
@++
KaloOopS
encore un topic qui fait peur
on ne mesure pas un temps en comparant 2 dates !
il faut utiliser un system.diagnostics.stopwatch
après pour la boucle for plus rapide que le select count(*) c'est possible en effet si tu as déjà les données, mais ca n'est pas forcément vrai dans tous les cas, ca dépend aussi de la structure de la base (indexes ...)
par contre au lieu de faire select where defaut = 0 et select where defaut = 1 il serait peut etre plus rapide de faire le nombre total de ligne - une des conditions
Toutes les mesures basées sur l'horloge "Temps réel", donc comparaison de date et heure, timespan, timer, etc, .... la précision sera de 18.2ms (15ms sur ton poste à priori).
Pour des mesures plus précises, il faut passer par les compteurs de performances et les API windows comme QueryPerformanceCounter, à condition que le matériel (carte mère) le permette.
Cette api est accessible dans .Net par la classe System.Diagnostic.PerformanceCounter
la classe StopWatch utilisera aussi l'api QueryPerformanceCounter si le matériel le permet, sinon elle utilisera l'horloge "Temps Réel" du système
Bonjour
pour utiliser StopWatch fallait-il le connaitre :D:aie:
donc j'ai essayé ca sur mes 3 opérations (SELECT COUNT(*), SELECT *, boucle FOR (pour ceux qui prendraient le topic en cours ;) )
ben les chronos n'ont pas du tout les mêmes valeurs qu'avec ma différence entre DateTime, cette fois-ci c'est la requête SELECT COUNT(*) la plus rapide : entre 25 et 30 msCode:
1
2
3
4
5
6
7 watch.Start(); // ma tache .... watch.Stop(); listBox1.Items.Add(watch.ElapsedMilliseconds.ToString());
les autres taches sont sensiblement identiques et oscillent entre 90 et 100ms avec une requête SELECT * légèrement plus rapide de 2 ms
bon ben si cette méthode est vraiment celle qui faut utiliser pour des chronos, vais utiliser celle-là ce sera toujours plus fiable.
merci
@++
KaloOopS
Intéressante cette discussion sur l'emploi des timer
Le hazar fait que j'ai un problème connexe sur un device mobile
Mais je vais ouvrir un autre sujet pour la cause "temps passé entre deux KeyPress"