Passer au contenu du pied de page
.NET AIDE

Chronomètre C# (Comment ça fonctionne pour les développeurs)

Dans le vaste paysage des langages de programmation, C# se distingue comme un langage polyvalent et puissant utilisé pour développer une large gamme d'applications, des applications de bureau aux applications web et mobiles. L'une des principales caractéristiques qui font de C# un favori parmi les développeurs est son ensemble riche de bibliothèques et de classes, offrant des solutions à divers défis de programmation. Parmi celles-ci, la classe Stopwatch occupe une place spéciale pour son rôle dans la mesure précise du temps, le profilage et l'analyse des performances.

Dans cet article, nous verrons comment utiliser l'objet Stopwatch en C# pour trouver le temps nécessaire pour effectuer une tâche spécifique en utilisant la propriété publique TimeSpan Elapsed. De plus, nous chronométrerons le temps total écoulé mesuré pour la création de PDF en utilisant IronPDF pour les développeurs C#.

1. Qu'est-ce que la classe Stopwatch ?

La classe Stopwatch fait partie de l'espace de noms System.Diagnostics en C#, et fournit un moyen simple et efficace de mesurer le temps écoulé avec une grande précision. Elle a été introduite avec le .NET Framework et a été un outil précieux pour les développeurs pour suivre le temps d'exécution des segments de code, optimiser les performances et profiler les applications.

2. Initialisation et utilisation de base

L'utilisation de la classe Stopwatch est simple. Pour commencer à l'utiliser, vous devez d'abord créer une nouvelle instance de la classe Stopwatch :

using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Create a new stopwatch instance for timing operations
        Stopwatch stopwatch = new Stopwatch();
    }
}
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Create a new stopwatch instance for timing operations
        Stopwatch stopwatch = new Stopwatch();
    }
}
Imports System.Diagnostics

Friend Class Program
	Shared Sub Main()
		' Create a new stopwatch instance for timing operations
		Dim stopwatch As New Stopwatch()
	End Sub
End Class
$vbLabelText   $csharpLabel

Une fois l'instance Stopwatch créée, vous pouvez démarrer et arrêter le chronomètre pour mesurer le temps écoulé :

using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // Start timing
        stopwatch.Start();
        Console.WriteLine("It will measure the time between start and stop");

        // Stop timing
        stopwatch.Stop();
    }
}
using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // Start timing
        stopwatch.Start();
        Console.WriteLine("It will measure the time between start and stop");

        // Stop timing
        stopwatch.Stop();
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch()

		' Start timing
		stopwatch.Start()
		Console.WriteLine("It will measure the time between start and stop")

		' Stop timing
		stopwatch.Stop()
	End Sub
End Class
$vbLabelText   $csharpLabel

Le temps écoulé peut être obtenu en utilisant la propriété Elapsed :

using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Simulate some work by sleeping for 2 seconds
        System.Threading.Thread.Sleep(2000);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed time
        TimeSpan elapsed = stopwatch.Elapsed;
        Console.WriteLine($"Elapsed time: {elapsed}");
    }
}
using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Simulate some work by sleeping for 2 seconds
        System.Threading.Thread.Sleep(2000);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed time
        TimeSpan elapsed = stopwatch.Elapsed;
        Console.WriteLine($"Elapsed time: {elapsed}");
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch()
		stopwatch.Start()

		' Simulate some work by sleeping for 2 seconds
		System.Threading.Thread.Sleep(2000)

		' Stop timing
		stopwatch.Stop()

		' Fetch the elapsed time
		Dim elapsed As TimeSpan = stopwatch.Elapsed
		Console.WriteLine($"Elapsed time: {elapsed}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie :

C# Stopwatch (Comment cela fonctionne pour les développeurs) : Figure 1 - Sortie du minuteur système

3. Fonctionnalités avancées du Stopwatch

La classe Stopwatch offre plusieurs fonctionnalités avancées au-delà de la mesure de temps basique. Explorons certaines de ces fonctionnalités :

3.1. Méthode Restart

La méthode Restart est un moyen pratique d'arrêter et de réinitialiser le temps écoulé à zéro en une seule opération. Cela peut être utile lorsqu'on mesure le temps d'exécution de plusieurs segments de code sans créer une nouvelle instance de Stopwatch.

using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // Start timing
        stopwatch.Start();
        Console.WriteLine("The time will restart after executing the below code");

        // Restart timing
        stopwatch.Restart();

        // Simulate work
        System.Threading.Thread.Sleep(1000);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed time after restart
        TimeSpan elapsed = stopwatch.Elapsed;
        Console.WriteLine($"Total Elapsed time after Restart: {elapsed}");
    }
}
using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // Start timing
        stopwatch.Start();
        Console.WriteLine("The time will restart after executing the below code");

        // Restart timing
        stopwatch.Restart();

        // Simulate work
        System.Threading.Thread.Sleep(1000);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed time after restart
        TimeSpan elapsed = stopwatch.Elapsed;
        Console.WriteLine($"Total Elapsed time after Restart: {elapsed}");
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch()

		' Start timing
		stopwatch.Start()
		Console.WriteLine("The time will restart after executing the below code")

		' Restart timing
		stopwatch.Restart()

		' Simulate work
		System.Threading.Thread.Sleep(1000)

		' Stop timing
		stopwatch.Stop()

		' Fetch the elapsed time after restart
		Dim elapsed As TimeSpan = stopwatch.Elapsed
		Console.WriteLine($"Total Elapsed time after Restart: {elapsed}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie :

C# Stopwatch (Comment cela fonctionne pour les développeurs) : Figure 2 - Sortie de redémarrage

3.2. Propriété IsHighResolution

La propriété IsHighResolution indique si le mécanisme de mesure sous-jacent est basé sur un compteur de performance haute résolution pour mesurer le temps écoulé avec précision. Vérifier cette propriété peut être utile lorsqu'on traite des systèmes qui peuvent ne pas prendre en charge des méthodes de chronométrage haute résolution.

using System;

class Program
{
    static void Main()
    {
        if (Stopwatch.IsHighResolution)
        {
            Console.WriteLine("High-resolution timing is supported");
        }
        else
        {
            Console.WriteLine("Fallback to lower-resolution timing");
        }
    }
}
using System;

class Program
{
    static void Main()
    {
        if (Stopwatch.IsHighResolution)
        {
            Console.WriteLine("High-resolution timing is supported");
        }
        else
        {
            Console.WriteLine("Fallback to lower-resolution timing");
        }
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		If Stopwatch.IsHighResolution Then
			Console.WriteLine("High-resolution timing is supported")
		Else
			Console.WriteLine("Fallback to lower-resolution timing")
		End If
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie :

C# Stopwatch (Comment cela fonctionne pour les développeurs) : Figure 3 - Sortie de chronométrage haute résolution

3.3. Propriété Frequency

La propriété Frequency renvoie la fréquence du minuteur sous-jacent en ticks par seconde. Cette valeur est utile pour convertir les ticks écoulés en d'autres unités de temps, telles que les millisecondes.

using System;

class Program
{
    static void Main()
    {
        long frequency = Stopwatch.Frequency;
        Console.WriteLine($"Timer Frequency: {frequency} ticks per second");
    }
}
using System;

class Program
{
    static void Main()
    {
        long frequency = Stopwatch.Frequency;
        Console.WriteLine($"Timer Frequency: {frequency} ticks per second");
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim frequency As Long = Stopwatch.Frequency
		Console.WriteLine($"Timer Frequency: {frequency} ticks per second")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie :

C# Stopwatch (Comment cela fonctionne pour les développeurs) : Figure 4 - Sortie de fréquence

3.4. Propriété ElapsedTicks

La propriété ElapsedTicks fournit un accès direct au nombre brut de ticks sans avoir besoin de le convertir en unités de temps. Cela peut être bénéfique lors de l'exécution de calculs personnalisés ou du traitement des exigences de chronométrage bas niveau.

using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Simulate some work
        System.Threading.Thread.Sleep(1500);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed ticks
        long elapsedTicks = stopwatch.ElapsedTicks;
        Console.WriteLine($"Elapsed Ticks: {elapsedTicks}");
    }
}
using System;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Simulate some work
        System.Threading.Thread.Sleep(1500);

        // Stop timing
        stopwatch.Stop();

        // Fetch the elapsed ticks
        long elapsedTicks = stopwatch.ElapsedTicks;
        Console.WriteLine($"Elapsed Ticks: {elapsedTicks}");
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch()
		stopwatch.Start()

		' Simulate some work
		System.Threading.Thread.Sleep(1500)

		' Stop timing
		stopwatch.Stop()

		' Fetch the elapsed ticks
		Dim elapsedTicks As Long = stopwatch.ElapsedTicks
		Console.WriteLine($"Elapsed Ticks: {elapsedTicks}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie :

C# Stopwatch (Comment cela fonctionne pour les développeurs) : Figure 5 - Sortie de ticks écoulés

4. Introduction à IronPDF en C

IronPDF est une puissante bibliothèque C# qui permet aux développeurs de créer, manipuler et traiter facilement des documents PDF dans leurs applications .NET. Que vous ayez besoin de générer des PDF à partir de HTML, d'images ou d'autres formats, IronPDF offre un ensemble complet d'outils pour une intégration transparente dans vos projets C#.

IronPDF offre la capacité unique de convertir HTML en PDF, en conservant les mises en page et les styles intacts. Cette fonctionnalité est idéale pour créer des PDF à partir de contenu web, tels que des rapports, des factures ou de la documentation. Vous pouvez convertir des fichiers HTML, des URL et des chaînes HTML en fichiers PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Initialize the PDF renderer
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Initialize the PDF renderer
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize the PDF renderer
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

4.1. Installation de IronPDF en C

Pour commencer à utiliser IronPDF dans votre application C#, suivez ces étapes simples :

  1. Gestionnaire de packages NuGet : Ouvrez votre projet C# dans Visual Studio et accédez à la console du gestionnaire de packages. Exécutez la commande suivante pour installer IronPDF :

    Install-Package IronPdf

    Alternativement, vous pouvez utiliser la Page du package NuGet de IronPDF pour télécharger et installer le package "IronPdf".

  2. Référence dans le code : Après l'installation réussie, ajoutez une référence à IronPDF dans votre code C# :

    using IronPdf;
    using IronPdf;
    Imports IronPdf
    $vbLabelText   $csharpLabel

    Maintenant, vous êtes prêt à tirer parti des capacités de IronPDF dans votre application.

4.2. Utilisation de C# Stopwatch pour chronométrer la création de PDF à partir d'une URL

Voyons maintenant comment utiliser la classe Stopwatch de C# pour mesurer le temps nécessaire pour créer un PDF à partir d'une URL en utilisant IronPDF :

using System;
using System.Diagnostics;
using IronPdf;

class Program
{
    static void Main()
    {
        // Initialize IronPDF Renderer
        IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf();

        // Specify the URL for PDF generation
        string urlToConvert = "https://example.com";

        // Use Stopwatch to measure the time taken
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Create PDF from URL
        PdfDocument PDF = Renderer.RenderUrlAsPdf(urlToConvert);

        // Stop measuring elapsed time
        stopwatch.Stop();

        // Save the generated PDF to a file
        PDF.SaveAs("GeneratedPDF.pdf");

        // Display the time taken
        Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds");
    }
}
using System;
using System.Diagnostics;
using IronPdf;

class Program
{
    static void Main()
    {
        // Initialize IronPDF Renderer
        IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf();

        // Specify the URL for PDF generation
        string urlToConvert = "https://example.com";

        // Use Stopwatch to measure the time taken
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Create PDF from URL
        PdfDocument PDF = Renderer.RenderUrlAsPdf(urlToConvert);

        // Stop measuring elapsed time
        stopwatch.Stop();

        // Save the generated PDF to a file
        PDF.SaveAs("GeneratedPDF.pdf");

        // Display the time taken
        Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds");
    }
}
Imports System
Imports System.Diagnostics
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		' Initialize IronPDF Renderer
		Dim Renderer As New IronPdf.HtmlToPdf()

		' Specify the URL for PDF generation
		Dim urlToConvert As String = "https://example.com"

		' Use Stopwatch to measure the time taken
		Dim stopwatch As New Stopwatch()
		stopwatch.Start()

		' Create PDF from URL
		Dim PDF As PdfDocument = Renderer.RenderUrlAsPdf(urlToConvert)

		' Stop measuring elapsed time
		stopwatch.Stop()

		' Save the generated PDF to a file
		PDF.SaveAs("GeneratedPDF.pdf")

		' Display the time taken
		Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds")
	End Sub
End Class
$vbLabelText   $csharpLabel

Cet exemple initialise IronPDF, utilise la classe HtmlToPdf pour rendre un PDF à partir d'une URL spécifiée, et mesure le temps pris en utilisant Stopwatch. Ajustez la variable urlToConvert avec l'URL souhaitée, et vous pouvez personnaliser davantage le processus de création du PDF selon vos besoins pour votre application.

Sortie :

C# Stopwatch (Comment cela fonctionne pour les développeurs) : Figure 6 - Sortie du minuteur de création de PDF

5. Conclusion

En conclusion, la classe Stopwatch en C# est un outil essentiel pour la mesure précise du temps et l'analyse des performances, offrant aux développeurs les moyens d'optimiser le code et d'évaluer l'efficacité opérationnelle. Son interface intuitive et ses fonctionnalités avancées la rendent polyvalente pour diverses exigences de chronométrage. De plus, l'intégration de IronPDF dans les projets C# étend les capacités du langage en matière de manipulation de documents PDF, fournissant une solution transparente pour générer, modifier et traiter des PDFs.

L'exemple démontré de l'utilisation de Stopwatch pour mesurer le temps pris pour créer un PDF à partir d'une URL avec IronPDF montre la synergie entre le suivi précis du temps et les bibliothèques avancées, soulignant l'importance d'un chronométrage méticuleux dans l'évaluation des performances des applications. Ensemble, le Stopwatch de C# et IronPDF permettent aux développeurs de construire des applications à haute performance avec un chronométrage méticuleux et des capacités de gestion de PDF polyvalentes.

Pour obtenir votre licence d'essai gratuite afin de tester la fonctionnalité IronPDF, visitez la Page d'information sur la licence IronPDF. Le tutoriel complet sur la conversion de l'URL en PDF peut être trouvé sur le Tutoriel URL vers PDF d'IronPDF.

Questions Fréquemment Posées

Comment la classe Chronomètre aide-t-elle à optimiser les performances des applications C# ?

La classe Chronomètre en C# permet aux développeurs de mesurer le temps pris par l'exécution du code avec une haute précision. En suivant le temps écoulé, les développeurs peuvent identifier les goulets d'étranglement de performance et optimiser le code pour une meilleure efficacité.

Quelles sont les fonctionnalités avancées offertes par la classe Chronomètre pour les développeurs C# ?

La classe Chronomètre fournit des fonctionnalités avancées telles que la méthode Restart pour réinitialiser et démarrer le chronométrage à nouveau, IsHighResolution pour vérifier la précision du timing du système, Frequency pour la fréquence du timing, et ElapsedTicks pour une mesure temporelle granulaire.

La classe Chronomètre peut-elle être utilisée pour les timings haute résolution sur tous les systèmes ?

La classe Chronomètre prend en charge les timings haute résolution si le matériel du système le permet. Les développeurs peuvent vérifier la propriété IsHighResolution pour déterminer si leur système permet un chronométrage haute résolution.

Comment pouvez-vous convertir du contenu HTML en PDF dans une application C# ?

Vous pouvez utiliser IronPDF pour convertir du contenu HTML en PDF dans une application C#. IronPDF maintient l'intégrité du style et de la mise en page du HTML, ce qui la rend adaptée pour générer des documents PDF de haute qualité comme des rapports et des factures.

Comment intégrer le Chronomètre avec la génération de PDF en C# ?

Pour intégrer le Chronomètre avec la génération de PDF, démarrez le Chronomètre avant de lancer le processus de rendu PDF avec IronPDF. Une fois le PDF généré, arrêtez le Chronomètre pour mesurer le temps pris pour le processus entier.

Quel est le processus pour installer une bibliothèque PDF dans un projet C# Visual Studio ?

Dans Visual Studio, vous pouvez installer IronPDF en utilisant le gestionnaire de paquets NuGet. Exécutez la commande Install-Package IronPdf dans la console du gestionnaire de paquets et incluez using IronPdf; dans votre code pour accéder à ses fonctionnalités.

Pourquoi la classe Chronomètre est-elle cruciale pour le réglage des performances en C# ?

La classe Chronomètre est cruciale pour le réglage des performances parce qu'elle fournit des capacités de minutage précises qui aident les développeurs à mesurer et analyser le temps d'exécution du code. Ces informations sont essentielles pour identifier les opérations lentes et améliorer les performances de l'application.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite