.NET ヘルプ

C# ストップウォッチ(開発者のための仕組み)

プログラミング言語の広大な風景の中で、C#は、デスクトップアプリケーションからウェブやモバイルアプリケーションに至るまで、さまざまなアプリケーションの開発に使用される多用途で強力な言語として際立っています。 C#が開発者の間で人気がある理由の一つは、多くのライブラリやクラスが豊富に揃っていることです。これにより、さまざまなプログラミングの課題に対する解決策が提供されます。 これらの中で、Stopwatch クラスは、正確な時間測定、プロファイリング、およびパフォーマンス分析における役割で特別な地位を占めています。

この記事では、C#のStopwatchオブジェクトを使用して特定のタスクを実行するのに要した時間をpublicのTimeSpan Elapsedプロパティを利用して計測する方法を見ていきます。 また、C#開発者向けのIronPDFを使用してPDF作成にかかる総経過時間を計測します。

ストップウォッチクラスとは何ですか?

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
$vbLabelText   $csharpLabel

Stopwatch インスタンスが作成されたら、ストップウォッチを開始および停止して経過時間を測定できます。

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
$vbLabelText   $csharpLabel

経過時間は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}")
$vbLabelText   $csharpLabel

出力:

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}")
$vbLabelText   $csharpLabel

出力:

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
$vbLabelText   $csharpLabel

出力:

C# ストップウォッチ (開発者向けの動作方法):図 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")
$vbLabelText   $csharpLabel

出力:

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}")
$vbLabelText   $csharpLabel

出力:

C# ストップウォッチ(開発者向けの仕組み):図 5 - 経過したティックの出力

4. C#におけるIronPDFの紹介

IronPDFは、開発者が.NETアプリケーション内でPDFドキュメントを簡単に作成、操作、処理できる強力なC#ライブラリです。 HTML、画像、その他の形式からPDFを生成する必要がある場合、IronPDFはC#プロジェクトにシームレスに統合するための包括的なツールセットを提供します。

IronPDFは、レイアウトやスタイルをそのまま保持してHTMLをPDFに変換するユニークな機能を提供します。 この機能は、レポート、請求書、またはドキュメントなどのWebコンテンツから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
$vbLabelText   $csharpLabel

4.1. C#でのIronPDFのインストール

C#アプリケーションでIronPDFを使用し始めるには、次の簡単な手順に従ってください:

  1. NuGet パッケージ マネージャー: Visual Studio で C# プロジェクトを開き、パッケージ マネージャー コンソールに移動します。 以下のコマンドを実行してIronPDFをインストールしてください:
   Install-Package IronPdf
   Install-Package IronPdf
SHELL

または、IronPDF NuGet パッケージページを使用して、「IronPdf」パッケージをダウンロードおよびインストールすることができます。

  1. コード内の参照: インストールが成功した後、C#コードにIronPDFへの参照を追加します。
   using IronPdf;
   using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

さて、アプリケーションでIronPDFの機能を活用する準備が整いました。

4.2. C#ストップウォッチを使用してURLからのPDF作成を計測する

それでは、IronPDFを使用してURLからPDFを作成するのにかかる時間を測定するために、C#のStopwatchクラスをどのように使用するかを示しましょう。

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
$vbLabelText   $csharpLabel

この例はIronPDFを初期化し、HtmlToPdfクラスを使用して指定されたURLからPDFをレンダリングし、Stopwatchを使用して経過時間を計測します。 変換したいURLをurlToConvert変数に設定し、アプリケーションに必要なPDF作成プロセスをさらにカスタマイズできます。

出力:

C# ストップウォッチ (開発者向けの動作方法): 図 6 - PDF 作成タイマー出力

5. 結論

結論として、C#のStopwatchクラスは、正確な時間測定とパフォーマンス分析のための重要なツールであり、開発者にコードを最適化し、操作効率を評価する手段を提供します。 その直感的なインターフェースと高度な機能が、多様なタイミング要件に対応するための汎用性を持たせています。 さらに、IronPDFをC#プロジェクトに統合することで、PDFドキュメントの操作における言語の機能が拡張され、PDFの生成、修正、および処理のためのシームレスなソリューションが提供されます。

IronPDF を使用して URL から PDF を作成するのに要した時間を測定するために Stopwatch を使用した例は、正確な時間追跡と高度なライブラリの相乗効果を示し、アプリケーション性能を評価する際の綿密なタイミングの重要性を強調しています。 C#のStopwatchとIronPDFを組み合わせることで、開発者は高性能アプリケーションを緻密なタイミングと多用途なPDF処理機能で構築できます。

IronPDFの機能をテストするための無料トライアルライセンスを取得するには、IronPDFライセンス情報ページをご覧ください。 URL を PDF に変換する完全なチュートリアルは、IronPDF URL to PDF チュートリアル で見つけることができます。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
Jquery Datatable(開発者向けの動作方法)
次へ >
Swashbuckle ASP .NET Core (開発者向けの仕組み)