DateTime et millisecondes

[Résolu]
Signaler
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Bonjour j'ai une question que j'arrive pas à résoudre. Pourquoi lorsque je fais


for(int i =0; i<= 100; i++)

    Console.Write("millisecondes : {0}\n", DateTiime.Now.Millisecond);


Il ne change que toute les 10-15 lignes (suivant les processeurs à mon avis)?

On voit clairement que chaque phase de l'execution prend au moins 1 ms
vu qu'il passe de bloc en bloc. Alors pourquoi ne raffraichit-il pas la
donnée à chaque ligne?

Par avance merci

6 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, pour avoir des valeurs bien plus précises utilise la classe StopWatch. Ton instruction prend biens moins d'un seconde mais par moment le processeur est occupé ailleurs, peut être le garbage collector.
Messages postés
143
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 octobre 2006

je ne comprends pas ce que tu dis:

"On voit clairement que chaque phase de l'execution prend au moins 1 ms vu qu'il passe de bloc en bloc."

Ta ligne :
Console.Write("millisecondes : {0}\n", DateTiime.Now.Millisecond);

est executer en d'1ms(et heuresement) c'est pour cette raison quelle ne change pas à chaque fois.
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
    lol c'est sur heureusement qu'il execute en moins d'une millisecondes cette instruction :p
Si tu veux vraiment afficher sur chaques ligne le temps ... je te conseille d'utiliser un timer et a chaque interval d'1ms => Console.Write("millisecondes : {0}\n", DateTiime.Now.Millisecond);
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

Bon je vais sortir ce que la console me renvoie :


ms : 218

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 328

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338

ms : 338


Là j'ai fait qu'une boucle jusque 40, on voit qu'il donne le meme
résultat et puis op il passe de 10 et continu... comme si le code resté
en mémoire et qu'il le reprennait et quand il se rendait compte que la
valeur avait changé, il la changé. Je trouve ça très troublant.
J'aurais plus aimé connaitre le fond du problème, plutôt que me
résoudre à penser que c'est comme ça et puis c'est tout.

Amicalement TMCUH
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

Ahh oui le fameux gabarge collector, merci de me mettre sur la
voie. Car ce qui m'étonnait ,c'est que même avec un Thread.Sleep(1)
entre chaque "écriture", le temps ne changé par autant.

Mais bon but n'est pas de généré quelque chose toute les milliseconde,
mais plutot que lorsque j'appel une fonction qui elle génère quelque
chose en fonction de cette milliseconde, que la valeur soit bien
unique.

Car pour le moment pour généré mon numéro unique je suis obligé de
faire un sleep de 10 ms... pas 5 pas 9 ... 10. Et j'arrive pas à
comprendre pour l'unicité des valeurs ne se fait que toute les 10 ms.


Mais merci pour ce renseignement je vais explorer cette voie
Amicalement TMCUH
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

Je viens de tester effectivement la class StopWatch répond nettement mieux aux attentes. Nikel merci

Amicalement TMCUH