
C# Stopwatch (jak to działa dla programistów)
W obszernym krajobrazie języków programowania C# wyróżnia się jako wszechstronny i potężny język używany do tworzenia szerokiej gamy aplikacji, począwszy od aplikacji na komputery stacjonarne po aplikacje sieciowe i mobilne. Jedną z kluczowych cech, które sprawiają, że C# jest ulubieńcem wśród deweloperów, jest jego bogaty zestaw bibliotek i klas, oferujący rozwiązania wielu wyzwań programistycznych. Wśród nich klasa Stopwatch zajmuje szczególne miejsce ze względu na swoją rolę w dokładnym pomiarze czasu, profilowaniu i analizie wydajności.
W tym artykułe pokażemy, jak używać obiektu Stopwatch w C#, aby znaleźć czas potrzebny do wykonania określonego zadania, korzystając z publicznej właściwości TimeSpan Elapsed. Ponadto zmierzymy całkowity upływ czasu mierzony podczas tworzenia PDF przy użyciu IronPDF for C# Developers.
1. Co to jest klasa Stopwatch?
Klasa Stopwatch jest częścią przestrzeni nazw System.Diagnostics w C# i zapewnia prosty oraz wydajny sposób pomiaru upływającego czasu z wysoką precyzją. Została wprowadzona wraz z .NET Framework i jest cennym narzędziem dla deweloperów do śledzenia czasu wykonania segmentów kodu, optymalizacji wydajności i profilowania aplikacji.
2. Inicjalizacja i podstawowe użycie
Użycie klasy Stopwatch jest proste. Aby rozpocząć jej używanie, najpierw należy utworzyć nową instancję klasy 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 ClassPo utworzeniu instancji Stopwatch można rozpocząć i zatrzymać stoper, aby zmierzyć czas, jaki upłynął:
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
Imports System.Diagnostics
Module Program
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 ModuleCzas, który upłynął, można uzyskać za pomocą właściwości 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 ClassWynik:

3. Zaawansowane funkcje Stopwatch
Klasa Stopwatch oferuje kilka zaawansowanych funkcji poza podstawowym pomiarem czasu. Poznajmy niektóre z tych funkcji:
3.1. Metoda Restart
Metoda Restart to wygodny sposób na zatrzymanie i zresetowanie upływającego czasu do zera w pojedynczej operacji. Może to być przydatne przy mierzeniu czasu wykonania wielu segmentów kodu bez tworzenia nowej instancji 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}");
}
}Imports System
Imports System.Diagnostics
Imports System.Threading
Module Program
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
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 ModuleWynik:

3.2. Właściwość IsHighResolution
Właściwość IsHighResolution wskazuje, czy wykorzystywany mechanizm pomiaru czasu opiera się na liczniku wydajności o wysokiej rozdzielczości pozwalającym dokładnie mierzyć upływający czas. Sprawdzenie tej właściwości może być przydatne w przypadku systemów, które mogą nie obsługiwać metod pomiaru czasu o wysokiej rozdzielczości.
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 ClassWynik:

3.3. Właściwość Frequency
Właściwość Frequency zwraca częstotliwość podstawowego zegara w taktach na sekundę. Ta wartość jest użyteczna do przeliczania upływu tików na inne jednostki czasu, takie jak milisekundy.
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 ClassWynik:

3.4. Właściwość ElapsedTicks
Właściwość ElapsedTicks zapewnia bezpośredni dostęp do surowej liczby taktów bez potrzeby konwersji na jednostki czasu. Może to być korzystne przy wykonywaniu własnych obliczeń lub pracy z niskopoziomowymi wymaganiami pomiaru czasu.
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 ClassWynik:

4. Introduction to IronPDF in C#
IronPDF to potężna biblioteka C# pozwalająca deweloperom na łatwe tworzenie, manipulowanie i przetwarzanie dokumentów PDF wewnątrz swoich aplikacji .NET. Niezależnie od tego, czy potrzebujesz generować PDF-y z HTML, obrazów lub innych formatów, IronPDF zapewnia kompleksowy zestaw narzędzi do bezproblemowej integracji z twoimi projektami C#.
IronPDF oferuje unikalną możliwość konwersji HTML na PDF zachowując układy i style. Ta funkcjonalność jest idealna do tworzenia PDF-ów z treści internetowych, takich jak raporty, faktury lub dokumentacja. Możesz konwertować pliki HTML, adresy URL oraz ciągi HTML na pliki 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
Module Program
Sub Main(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 Module4.1. Installation of IronPDF in C#
Aby zacząć korzystać z IronPDF w swojej aplikacji C#, wykonaj te proste kroki:
-
Menadżer pakietów NuGet: Otwórz swój projekt C# w Visual Studio i przejdź do Konsoli Menadżera Pakietów. Wykonaj następujące polecenie, aby zainstalować IronPDF:
Alternatywnie, można użyć strony pakietu IronPDF NuGet, aby pobrać i zainstalować pakiet "IronPDF".
-
Odwołanie w kodzie: Po pomyślnej instalacji dodaj odwołanie do IronPDF w swoim kodzie C#:
using IronPdf;Imports IronPdfTeraz jesteś gotowy, aby wykorzystać możliwości IronPDF w swojej aplikacji.
4.2. Użycie C# Stopera do odmierzania czasu tworzenia PDF z URL
Teraz zademonstrujemy, jak użyć klasy Stopwatch w C# do pomiaru czasu potrzebnego do utworzenia PDF z URL za pomocą 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");
}
}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 ClassPrzykład ten inicjalizuje IronPDF, używa klasy HtmlToPdf do renderowania PDF z określonego URL i mierzy czas potrzebny za pomocą Stopwatch. Dostosuj zmienną urlToConvert do żądanego URL i możesz dalej dostosowywać proces tworzenia PDF zgodnie z potrzebami aplikacji.
Wynik:

5. Podsumowanie
Podsumowując, klasa Stopwatch w C# jest kluczowym narzędziem do dokładnego pomiaru czasu i analizy wydajności, oferującym deweloperom środki do optymalizacji kodu i oceny efektywności operacyjnej. Jej intuicyjny interfejs i zaawansowane funkcje czynią ją wszechstronną do różnych wymagań czasowych. Ponadto, integracja IronPDF w projektach C# rozszerza możliwości języka w manipulacji dokumentami PDF, dostarczając bezproblemowe rozwiązanie do tworzenia, modyfikowania i przetwarzania PDF-ów.
Przykład użycia Stopwatch do pomiaru czasu potrzebnego do utworzenia PDF z URL za pomocą IronPDF ilustruje współdziałanie między precyzyjnym śledzeniem czasu a zaawansowanymi bibliotekami, podkreślając znaczenie skrupulatnego pomiaru czasu w ocenie wydajności aplikacji. Razem, Stopwatch w C# i IronPDF umożliwiają deweloperom budowanie aplikacji o wysokiej wydajności z dokładnym pomiarem czasu i wszechstronnymi możliwościami obsługi PDF.
Aby uzyskać darmową licencję próbną na przetestowanie funkcji IronPDF, odwiedź Stronę informacji o licencjonowaniu IronPDF. Kompletny poradnik na temat konwersji URL na PDF można znaleźć na Poradniku IronPDF: URL na PDF.

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.
Powiązane artykuły


