Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
2 sur 2 ont trouvé cela utile - Évaluez ce sujet

Stopwatch, classe

Fournit un jeu de méthodes et de propriétés que vous pouvez utiliser pour mesurer le temps écoulé précisément.

System.Object
  System.Diagnostics.Stopwatch

Espace de noms :  System.Diagnostics
Assembly :  System (dans System.dll)
public class Stopwatch

Le type Stopwatch expose les membres suivants.

  Nom Description
Méthode publique Pris en charge par XNA Framework Stopwatch Initialise une nouvelle instance de la classe Stopwatch.
Début
  Nom Description
Propriété publique Pris en charge par XNA Framework Elapsed Obtient le temps total écoulé mesuré par l'instance actuelle.
Propriété publique Pris en charge par XNA Framework ElapsedMilliseconds Obtient le temps total écoulé mesuré par l'instance actuelle, en millisecondes.
Propriété publique Pris en charge par XNA Framework ElapsedTicks Obtient le temps total écoulé mesuré par l'instance actuelle, en graduations de minuterie.
Propriété publique Pris en charge par XNA Framework IsRunning Obtient une valeur indiquant si la minuterie Stopwatch s'exécute.
Début
  Nom Description
Méthode publique Pris en charge par XNA Framework Equals(Object) Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode protégée Pris en charge par XNA Framework Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique Membre statique Pris en charge par XNA Framework GetTimestamp Obtient le nombre actuel de graduations dans le mécanisme de minuterie (Timer).
Méthode publique Pris en charge par XNA Framework GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégée Pris en charge par XNA Framework MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework Reset Arrête la mesure d'intervalle de temps et remet le temps écoulé à zéro.
Méthode publique Restart Arrête la mesure d'intervalle de temps, réinitialise le temps écoulé sur zéro puis commence à le mesurer.
Méthode publique Pris en charge par XNA Framework Start Démarre ou reprend la mesure du temps écoulé pour un intervalle.
Méthode publique Membre statique Pris en charge par XNA Framework StartNew Initialise une nouvelle instance de Stopwatch, affecte une valeur de zéro à la propriété de temps écoulé et commence à mesurer le temps écoulé.
Méthode publique Pris en charge par XNA Framework Stop Cesse de mesurer le temps écoulé pour un intervalle.
Méthode publique Pris en charge par XNA Framework ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Début
  Nom Description
Champ public Membre statique Pris en charge par XNA Framework Frequency Obtient la fréquence de la minuterie en nombre de graduations par seconde. Ce champ est en lecture seule.
Champ public Membre statique Pris en charge par XNA Framework IsHighResolution Indique si la minuterie est basée sur un compteur de performance haute résolution. Ce champ est en lecture seule.
Début

Une instance de Stopwatch peut mesurer le temps écoulé pour un intervalle ou le total du temps écoulé sur plusieurs intervalles. Dans un scénario Stopwatch typique, vous appelez la méthode Start, puis la méthode Stop, et, enfin, vous vérifiez le temps écoulé à l'aide de la propriété Elapsed.

Une instance de Stopwatch s'exécute ou est arrêtée. Utilisez IsRunning pour déterminer l'état actuel de Stopwatch. Utilisez Start pour commencer à mesurer le temps écoulé ; utilisez Stop pour arrêter de mesurer le temps écoulé. Demandez la valeur de temps écoulé par l'intermédiaire des propriétés Elapsed, ElapsedMilliseconds ou ElapsedTicks. Vous pouvez interroger les propriétés de temps écoulé pendant que l'instance s'exécute ou est arrêtée. Les propriétés de temps écoulé augmentent régulièrement pendant que le Stopwatch s'exécute ; ils restent constants lorsque l'instance s'arrête.

Par défaut, la valeur de temps écoulé d'une instance de Stopwatch équivaut au total de tous les intervalles de temps mesurés. Chaque appel à Start commence à compter au temps total passé ; chaque appel de Stop termine la mesure d'intervalle en cours et gèle la valeur du temps total passé. Utilisez la méthode Reset pour effacer le temps total passé dans une instance de Stopwatch existante.

Stopwatch mesure le temps écoulé en comptant les graduations de la minuterie dans le mécanisme de minuterie sous-jacent. Si le matériel et le système d'exploitation installés prennent en charge un compteur de performance haute résolution, la classe Stopwatch utilise ce compteur pour mesurer le temps écoulé. Sinon, la classe Stopwatch utilise l'horloge système pour mesurer le temps écoulé. Utilisez les champs Frequency et IsHighResolution pour déterminer la précision et la résolution de l'implémentation du minutage Stopwatch.

La classe Stopwatch aide à la manipulation des compteurs connexes à la performance de minutage dans le code managé. Plus particulièrement, le champ Frequency et la méthode GetTimestamp peuvent être utilisés au lieu des API Win32 QueryPerformanceFrequency et QueryPerformanceCounter non managées.

Remarque Remarque

Sur un ordinateur multiprocesseur, peu importe le processeur sur lequel le thread s'exécute. Toutefois, vous pouvez obtenir des résultats de minutage différents sur différents processeurs à cause des bogues du BIOS ou de la Couche d'abstraction matérielle (HAL). Pour spécifier l'affinité de processeur pour un thread, utilisez la méthode ProcessThread.ProcessorAffinity.

L'exemple suivant montre comment utiliser la classe Stopwatch pour déterminer la durée d'exécution pour une application.


using System;
using System.Diagnostics;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        Thread.Sleep(10000);
        stopWatch.Stop();
        // Get the elapsed time as a TimeSpan value.
        TimeSpan ts = stopWatch.Elapsed;

        // Format and display the TimeSpan value.
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine("RunTime " + elapsedTime);
    }
}


L'exemple suivant montre l'utilisation de la classe Stopwatch pour calculer des données de performance.


using System;
using System.Diagnostics;

namespace StopWatchSample
{
    class OperationsTimer
    {
        public static void Main()
        {
            DisplayTimerProperties();

            Console.WriteLine();
            Console.WriteLine("Press the Enter key to begin:");
            Console.ReadLine();
            Console.WriteLine();

            TimeOperations();
        }

        public static void DisplayTimerProperties()
        {
            // Display the timer frequency and resolution.
            if (Stopwatch.IsHighResolution)
            {
                Console.WriteLine("Operations timed using the system's high-resolution performance counter.");
            }
            else 
            {
                Console.WriteLine("Operations timed using the DateTime class.");
            }

            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);
        }

        private static void TimeOperations()
        {
            long nanosecPerTick = (1000L*1000L*1000L) / Stopwatch.Frequency;
            const long numIterations = 10000;

            // Define the operation title names.
            String [] operationNames = {"Operation: Int32.Parse(\"0\")",
                                           "Operation: Int32.TryParse(\"0\")",
                                           "Operation: Int32.Parse(\"a\")",
                                           "Operation: Int32.TryParse(\"a\")"};


            // Time four different implementations for parsing 
            // an integer from a string. 

            for (int operation = 0; operation <= 3; operation++)
            {
                // Define variables for operation statistics.
                long numTicks = 0;
                long numRollovers = 0;
                long maxTicks = 0;
                long minTicks = Int64.MaxValue;
                int indexFastest = -1;
                int indexSlowest = -1;
                long milliSec = 0;

                Stopwatch time10kOperations = Stopwatch.StartNew();

                // Run the current operation 10001 times.
                // The first execution time will be tossed
                // out, since it can skew the average time.

                for (int i=0; i<=numIterations; i++) 
                {
                    long ticksThisTime = 0;
                    int inputNum;
                    Stopwatch timePerParse;

                    switch (operation)
                    {
                        case 0:
                            // Parse a valid integer using
                            // a try-catch statement.

                            // Start a new stopwatch timer.
                            timePerParse = Stopwatch.StartNew();

                            try 
                            {
                                inputNum = Int32.Parse("0");
                            }
                            catch (FormatException)
                            {
                                inputNum = 0;
                            }

                            // Stop the timer, and save the
                            // elapsed ticks for the operation.

                            timePerParse.Stop();
                            ticksThisTime = timePerParse.ElapsedTicks;
                            break;
                        case 1:
                            // Parse a valid integer using
                            // the TryParse statement.

                            // Start a new stopwatch timer.
                            timePerParse = Stopwatch.StartNew();

                            if (!Int32.TryParse("0", out inputNum))
                            { 
                                inputNum = 0;
                            }

                            // Stop the timer, and save the
                            // elapsed ticks for the operation.
                            timePerParse.Stop();
                            ticksThisTime = timePerParse.ElapsedTicks;
                            break;
                        case 2:
                            // Parse an invalid value using
                            // a try-catch statement.

                            // Start a new stopwatch timer.
                            timePerParse = Stopwatch.StartNew();

                            try 
                            {
                                inputNum = Int32.Parse("a");
                            }
                            catch (FormatException)
                            {
                                inputNum = 0;
                            }

                            // Stop the timer, and save the
                            // elapsed ticks for the operation.
                            timePerParse.Stop();
                            ticksThisTime = timePerParse.ElapsedTicks;
                            break;
                        case 3:
                            // Parse an invalid value using
                            // the TryParse statement.

                            // Start a new stopwatch timer.
                            timePerParse = Stopwatch.StartNew();

                            if (!Int32.TryParse("a", out inputNum))
                            { 
                                inputNum = 0;
                            }

                            // Stop the timer, and save the
                            // elapsed ticks for the operation.
                            timePerParse.Stop();
                            ticksThisTime = timePerParse.ElapsedTicks;
                            break;

                        default:
                            break;
                    }

                    // Skip over the time for the first operation,
                    // just in case it caused a one-time
                    // performance hit.
                    if (i == 0)
                    {
                        time10kOperations.Reset();
                        time10kOperations.Start();
                    }
                    else 
                    {

                        // Update operation statistics
                        // for iterations 1-10001.
                        if (maxTicks < ticksThisTime)
                        {
                            indexSlowest = i;
                            maxTicks = ticksThisTime;
                        }
                        if (minTicks > ticksThisTime)
                        {
                            indexFastest = i;
                            minTicks = ticksThisTime;
                        }
                        numTicks += ticksThisTime;
                        if (numTicks < ticksThisTime)
                        {
                            // Keep track of rollovers.
                            numRollovers ++;
                        }
                    }
                }  

                // Display the statistics for 10000 iterations.

                time10kOperations.Stop();
                milliSec = time10kOperations.ElapsedMilliseconds;

                Console.WriteLine();
                Console.WriteLine("{0} Summary:", operationNames[operation]);
                Console.WriteLine("  Slowest time:  #{0}/{1} = {2} ticks",
                    indexSlowest, numIterations, maxTicks);
                Console.WriteLine("  Fastest time:  #{0}/{1} = {2} ticks",
                    indexFastest, numIterations, minTicks);
                Console.WriteLine("  Average time:  {0} ticks = {1} nanoseconds", 
                    numTicks / numIterations, 
                    (numTicks * nanosecPerTick) / numIterations );
                Console.WriteLine("  Total time looping through {0} operations: {1} milliseconds", 
                    numIterations, milliSec);
            }
        }
     }
}
 


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ