Différence entre ElapsedTicks, ElapsedMilliseconds, Elapsed.Millisecondes et écoulé.TotalMilliseconds? (C#)

Je suis totalement confus entre ces 4. Quelle est la différence entre ElapsedMilliseconds (long), ElapsedTicks (long), Elapsed.Totalmillisecondes (double) et écoulé.Millisecondes (int)?

J'ai une fonction

    {
        Stopwatch sw = new Stopwatch();

        sw.Start();
        MyTimeConsumingAction();
        sw.Stop();

        sw.//what?
    }

Comment puis-je obtenir le temps correct consommé par mon processus de longue durée à partir de la propriété elapsed de l'objet Stopwatch en millisecondes?

Edit: j'ai essayé la documentation msdn mais ce n'est rien de détaillé là..

33
demandé sur nawfal 2012-01-17 16:15:29

4 réponses

Écoulé.TotalMilliseconds (double) renvoie le nombre total de millisecondes entières et fractionnaires écoulées depuis la création

Par exemple, un chronomètre arrêté à 1.23456 secondes retournerait 1234.56 dans cette propriété. Voir TimeSpan.TotalMilliseconds sur MSDN

Écoulé.Millisecondes (int) renvoie le nombre de millisecondes entières dans la seconde courante

Par exemple, un chronomètre à 1.234 secondes retournerait 234 dans cette propriété. Voir laps de Temps.ElapsedMilliseconds

ElapsedTicks (long) renvoie les tiques depuis le début du chronomètre.

Dans le contexte de la question initiale, relative à la classe Chronomètre, ElapsedTicks est le nombre de tiques écoulées. Les tiques se produisent au rythme du chronomètre.Fréquence, donc, pour calculer les secondes écoulées, calculer: numSeconds = chronomètre.ElapsedTicks / Chronomètre.Fréquence.

L'ancienne réponse définit les tiques comme le nombre de périodes de 100 nanosecondes, ce qui est correct dans le contexte de la classe DateTime, mais pas correct dans le contexte de la montre de classe. Voir Chronomètre.ElapsedTicks sur MSDN.

ElapsedMilliseconds renvoie un nombre arrondi à la milliseconde complète la plus proche, ce qui peut manquer de précision.TotalMilliseconds propriété peut donner.

Écoulé.TotalMilliseconds est un double qui peut renvoyer les temps d'exécution à la milliseconde partielle alors que ElapsedMilliseconds est Int64. par exemple un chronomètre à 0.0007 millisecondes retournerait 0, ou 1234.56 millisecondes retournerait 1234 dans cette propriété. Donc, pour la précision, utilisez toujours Elapsed.TotalMilliseconds.

Voir Chronomètre.ElapsedMilliseconds sur MSDN pour clarification.

Cordialement,

44
répondu Dr. ABT 2012-04-17 07:32:43

Reflétant la classe Chronomètre révèle que ElapsedMilliseconds est des tiques écoulées converties (et arrondies) en millisecondes:

public TimeSpan Elapsed
{
  get
  {
    return new TimeSpan(this.GetElapsedDateTimeTicks());
  }
}

public long ElapsedMilliseconds
{
  get
  {
    return this.GetElapsedDateTimeTicks() / 10000L;
  }
}
6
répondu granaker 2012-01-17 12:29:24

Dans une courte explication de msdn:

ElapsedMilliseconds

Cette propriété représente le temps écoulé arrondi à la valeur milliseconde entière la plus proche. Pour des mesures de plus grande précision, utilisez les propriétés Elapsedticks ou Elapsedticks.

ElapsedTicks

Cette propriété représente le nombre de ticks écoulés dans le mécanisme de minuterie sous-jacent. Une coche est la plus petite unité de temps que le chronomètre peut mesurer. Utilisez le champ Fréquence pour convertir la valeur ElapsedTicks en un nombre de deuxième.

Elapsed

Utilisez la propriété Elapsed pour récupérer la valeur de temps écoulé à l'aide des méthodes et des propriétés TimeSpan. Par exemple, vous pouvez formater L'instance TimeSpan renvoyée dans une représentation texte ou la transmettre à une autre classe qui nécessite un paramètre TimeSpan.

2
répondu Gustavo F 2012-01-17 12:24:53

Elapsed est TimeSpan. Si vous voulez afficher l'heure, alors juste Elapsed.ToString() devrait le faire

1
répondu Reniuz 2012-01-17 12:24:30