.NET 帮助

C# Stopwatch(对开发人员的作用)

发布 2024年一月27日
分享:

在广泛的编程语言领域中,C# 作为一种多功能且强大的语言脱颖而出,广泛用于开发各类应用程序,从桌面应用到网页和移动应用。 C# 受到开发者喜爱的主要原因之一是其丰富的库和类,提供了解决各种编程难题的解决方案。 其中,秒表类在准确时间测量、分析和性能分析中占有特殊的地位。

在本文中,我们将看到如何在C#中使用Stopwatch对象来通过公共TimeSpan Elapsed属性来找到执行特定任务所花费的时间。 此外,我们将计时所用的总时间来测量PDF创建的时间面向 C# 开发人员的 IronPDF.

什么是Stopwatch类?

Stopwatch 类是 C# 中 System.Diagnostics 命名空间的一部分,提供了一种简单且高效的方法来高精度测量经过的时间。 它是随着.NET Framework推出的,并且一直是开发人员跟踪代码段执行时间、优化性能和分析应用程序的宝贵工具。

2. 初始化和基本使用

使用Stopwatch类很简单。 要开始使用它,您首先需要创建一个新的Stopwatch类实例:

using System.Diagnostics;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch(); // Stopwatch object
    }
}
using System.Diagnostics;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch(); // Stopwatch object
    }
}
Imports System.Diagnostics

Friend Class Program
	Shared Sub Main()
		Dim stopwatch As New Stopwatch() ' Stopwatch object
	End Sub
End Class
VB   C#

一旦创建了 "秒表 "实例,就可以启动和停止秒表来测量经过的时间:

stopwatch.Start();
Console.WriteLine("It will measure the time between start and stop");
stopwatch.Stop(); // Stop measuring elapsed time
stopwatch.Start();
Console.WriteLine("It will measure the time between start and stop");
stopwatch.Stop(); // Stop measuring elapsed time
stopwatch.Start()
Console.WriteLine("It will measure the time between start and stop")
stopwatch.Stop() ' Stop measuring elapsed time
VB   C#

可使用 Elapsed 属性获取经过时间:

TimeSpan elapsed = stopwatch.Elapsed;
Console.WriteLine($"Elapsed time: {elapsed}");
TimeSpan elapsed = stopwatch.Elapsed;
Console.WriteLine($"Elapsed time: {elapsed}");
Dim elapsed As TimeSpan = stopwatch.Elapsed
Console.WriteLine($"Elapsed time: {elapsed}")
VB   C#

输出:

C# 秒表(如何为开发人员工作):图 1 - 系统定时器输出

秒表的高级功能

Stopwatch 类提供了几个比基本时间测量更高级的功能。 让我们来探索一些这些功能:

3.1. 重新启动方法

Restart 方法是一种方便的方法,可以通过单次操作停止并将已用时间重置为零。 这在测量多个代码段的执行时间而不创建新的 Stopwatch 实例时非常有用。

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
Console.WriteLine("The time will restart after executing the below code");
stopwatch.Restart(); 
stopwatch.Stop();
TimeSpan elapsed = stopwatch.Elapsed;
Console.WriteLine($"Total Elapsed time after Restart: {elapsed}");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
Console.WriteLine("The time will restart after executing the below code");
stopwatch.Restart(); 
stopwatch.Stop();
TimeSpan elapsed = stopwatch.Elapsed;
Console.WriteLine($"Total Elapsed time after Restart: {elapsed}");
Dim stopwatch As New Stopwatch()
stopwatch.Start()
Console.WriteLine("The time will restart after executing the below code")
stopwatch.Restart()
stopwatch.Stop()
Dim elapsed As TimeSpan = stopwatch.Elapsed
Console.WriteLine($"Total Elapsed time after Restart: {elapsed}")
VB   C#

输出:

C# 秒表(如何为开发人员工作):图 2 - 重新启动输出

3.2. IsHighResolution 属性

IsHighResolution 属性指示底层的计时机制是否基于高分辨率性能计数器,以准确测量经过的时间。在处理可能不支持高分辨率计时方法的系统时,检查此属性可能会很有用。

Stopwatch stopwatch = new Stopwatch();
if (Stopwatch.IsHighResolution)
{
    Console.WriteLine("High-resolution timing is supported");
}
else
{
    Console.WriteLine("Fallback to lower-resolution timing");
}
Stopwatch stopwatch = new Stopwatch();
if (Stopwatch.IsHighResolution)
{
    Console.WriteLine("High-resolution timing is supported");
}
else
{
    Console.WriteLine("Fallback to lower-resolution timing");
}
Dim stopwatch As New Stopwatch()
If System.Diagnostics.Stopwatch.IsHighResolution Then
	Console.WriteLine("High-resolution timing is supported")
Else
	Console.WriteLine("Fallback to lower-resolution timing")
End If
VB   C#

输出:

C# 秒表(如何为开发人员工作):图 3 - 高分辨率计时输出

3.3. 频率属性

Frequency属性返回基础定时器的频率,以每秒滴答次数计算。 此值用于将经过的计时周期转换为其他时间单位,例如毫秒。

Stopwatch stopwatch = new Stopwatch();
long frequency = Stopwatch.Frequency;
Console.WriteLine($"Timer Frequency: {frequency} ticks per second");
Stopwatch stopwatch = new Stopwatch();
long frequency = Stopwatch.Frequency;
Console.WriteLine($"Timer Frequency: {frequency} ticks per second");
Dim stopwatch As New Stopwatch()
Dim frequency As Long = System.Diagnostics.Stopwatch.Frequency
Console.WriteLine($"Timer Frequency: {frequency} ticks per second")
VB   C#

输出:

C# 秒表(如何为开发人员工作):图 4 - 频率输出

3.4. ElapsedTicks 属性

ElapsedTicks 属性提供直接访问原始的滴答计数,无需将其转换为时间单位。 这在执行自定义计算或处理低级时间要求时很有用。

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
// Code segment
long elapsedTicks = stopwatch.ElapsedTicks;
Console.WriteLine($"Elapsed Ticks: {elapsedTicks}");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
// Code segment
long elapsedTicks = stopwatch.ElapsedTicks;
Console.WriteLine($"Elapsed Ticks: {elapsedTicks}");
Dim stopwatch As New Stopwatch()
stopwatch.Start()
' Code segment
Dim elapsedTicks As Long = stopwatch.ElapsedTicks
Console.WriteLine($"Elapsed Ticks: {elapsedTicks}")
VB   C#

输出:

C# 秒表(如何为开发人员工作):图 5 - 已用计时器输出

4. IronPDF 在 C# 中的介绍

IronPDF 是一个强大的 C# 库,让开发人员可以在其 .NET 应用程序中轻松创建、操作和处理 PDF 文档。 无论您需要从HTML、图像或其他格式生成PDF,IronPDF都提供了一整套工具,便于无缝集成到您的C#项目中。

IronPDF 提供了独特的功能,可以转换HTML 转 PDF保持布局和样式不变。 此功能非常适合从网页内容创建PDF,如报告、发票或文档。 您可以将HTML文件、URL和HTML字符串转换为PDF文件。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        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)
    {
        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)
		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
VB   C#

4.1. 在C#中安装IronPDF

在您的C#应用程序中开始使用IronPDF,请按照以下简单步骤操作:

  1. NuGet 包管理器:在 Visual Studio 中打开您的 C# 项目,并导航到包管理器控制台。 执行以下命令来安装IronPDF:
   Install-Package IronPdf

或者,您也可以使用IronPDF NuGet 软件包页面下载并安装 "IronPDF" 包。

  1. 在代码中引用:成功安装后,在您的C#代码中添加对IronPDF的引用:
   using IronPdf;
   using IronPdf;
Imports IronPdf
VB   C#

现在,您已经准备好在您的应用程序中利用 IronPDF 的功能了。

使用 C# Stopwatch 记录从 URL 创建 PDF 的时间

现在,让我们演示如何使用C#的Stopwatch类来测量使用IronPDF从URL创建PDF所花费的时间:

using System;
using System.Diagnostics;
using IronPdf;

class Program
{
    static void Main()
    {
        // Initialize IronPDF
        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 or perform other actions
        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
        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 or perform other actions
        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
		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 or perform other actions
		PDF.SaveAs("GeneratedPDF.pdf")
		' Display the time taken
		Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds")
	End Sub
End Class
VB   C#

本示例初始化 IronPDF,使用 HtmlToPdf 类从指定的 URL 渲染 PDF,并使用 Stopwatch 计时。 调整 urlToConvert 变量为所需的URL,并且您可以根据应用程序的需要进一步自定义PDF创建过程。

输出:

C# 秒表(如何为开发人员工作):图 6 - PDF 创建计时器输出

结论

总之,C# 中的 Stopwatch 类作为一个重要工具,用于精确的时间测量和性能分析,为开发人员提供了优化代码和评估操作效率的方法。 直观的界面和高级功能使其在各种计时需求中具有多功能性。 此外,将IronPDF集成到C#项目中扩展了该语言在PDF文档处理方面的能力,为生成、修改和处理PDF提供了无缝解决方案。

示例展示了如何使用Stopwatch来测量利用IronPDF从URL创建PDF所花费的时间,展现了精确时间跟踪与高级库之间的协同作用,突出显示了在评估应用性能时仔细计时的重要性。 结合 C# 的 Stopwatch 和 IronPDF,为开发人员提供了构建高性能应用程序的强大工具,具备精确的计时和多功能的 PDF 处理能力。

要获取免费试用许可以测试IronPDF功能,请访问IronPDF 许可证信息页面. 关于 URL 到 PDF 转换的完整教程可在IronPDF URL 转 PDF 教程.

< 前一页
Jquery 数据表(开发人员如何使用)
下一步 >
Swashbuckle ASP .NET Core(如何为开发人员工作)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >