c# - start - vb net chronometre




Comment convertir les valeurs de chronomètre en nanosecondes, millisecondes et secondes? (5)

À partir des documents MSDN :

Utilisez les champs MSDN et IsHighResolution pour déterminer la précision et la résolution de l'implémentation du chronomètre.

long frequency = Stopwatch.Frequency;
Console.WriteLine("  Timer frequency in ticks per second = {0}",
    frequency);
long nanosecPerTick = (1000L*1000L*1000L) / frequency;
Console.WriteLine("  Timer is accurate within {0} nanoseconds", 
    nanosecPerTick);

C'est une question très fondamentale ... assez embarrassante, mais voici:

J'ai un bloc Chronomètre en code C #. Je détermine le temps écoulé en ticks et je veux ensuite convertir en ns, ms, s. Je sais que la fréquence est fournie par la classe Chronomètre et qu'elle est requise pour la conversion.

Merci


Selon MSDN , Fréquence vous indique le nombre de ticks par seconde. Donc:

Stopwatch sw = new Stopwatch();
// ...
double ticks = sw.ElapsedTicks;
double seconds = ticks / Stopwatch.Frequency;
double milliseconds = (ticks / Stopwatch.Frequency) * 1000;
double nanoseconds = (ticks / Stopwatch.Frequency) * 1000000000;

Utilisez cette classe:

public static class Utility
{
    public static long ElapsedNanoSeconds(this Stopwatch watch)
    {
         return watch.ElapsedTicks * 1000000000 / Stopwatch.Frequency;
    }
    public static long ElapsedMicroSeconds(this Stopwatch watch)
    {
        return watch.ElapsedTicks * 1000000 / Stopwatch.Frequency;
    }
}

Ensuite, vous pouvez obtenir les nanosecondes / microsecondes écoulées comme ceci:

var stopwatch = Stopwatch.StartNew();
//... measured code part
Console.WriteLine(stopwatch.ElapsedNanoSeconds());
// OR
Console.WriteLine(stopwatch.ElapsedMicroSeconds());

Pendant des millisecondes, vous pouvez utiliser la méthode ElapsedMilliseconds () de Chronomètre.


Utilisez la propriété Elapsed :

stopwatch.Elapsed.TotalMilliseconds

Stopwatch.Elapsed est un TimeSpan , vous pouvez donc faire myStopwatch.Elapsed.TotalMilliseconds , myStopwatch.Elapsed.TotalSeconds , etc.

// Create new stopwatch
Stopwatch stopwatch = new Stopwatch();

// Begin timing
stopwatch.Start();

// Do something
for (int i = 0; i < 1000; i++)
{
    Thread.Sleep(1);
}

// Stop timing
stopwatch.Stop();

// Write result
Console.WriteLine("Time elapsed (s): {0}", stopwatch.Elapsed.TotalSeconds);
Console.WriteLine("Time elapsed (ms): {0}", stopwatch.Elapsed.TotalMilliseconds);
Console.WriteLine("Time elapsed (ns): {0}", stopwatch.Elapsed.TotalMilliseconds * 1000000);

Sortie:

Time elapsed (s): 2.4976622
Time elapsed (ms): 2497.6622
Time elapsed (ns): 2497662200

Notez que stopwatch.ElapsedMilliseconds renvoie un long et n'est donc précis que jusqu'à la milliseconde, alors que stopwatch.Elapsed.TotalMilliseconds renvoie un double et a la même précision que stopwatch.ElapsedTicks , sauf qu'il est plus facile à utiliser. ILSpy montre que TimeSpan.TotalMilliseconds est calculé à l'aide de ticks.





c#