フッターコンテンツにスキップ
.NETヘルプ

C# Stopwatch (開発者向けの仕組み)

広大なプログラミング言語の世界の中で、C#はデスクトップからWebやモバイルアプリケーションに至るまで、幅広いアプリケーションの開発に使用される多才で強力な言語として際立っています。 C#が開発者の間で人気となっている主な特徴の1つは、さまざまなプログラミングの課題に対するソリューションを提供する豊富なライブラリとクラスのセットです。 これらの中で、Stopwatchクラスは、正確な時間計測、プロファイリング、およびパフォーマンス分析の役割で特別な位置を占めています。

この記事では、C#で特定のタスクを実行するためにかかった時間を見つけるために、Stopwatchオブジェクトを使用する方法を紹介します。 IronPDF for C# Developersを使用したPDF作成にかかった総経過時間も計測します。

1. Stopwatchクラスとは?

StopwatchクラスはC#のSystem.Diagnostics名前空間の一部であり、高精度で経過時間を測定するためのシンプルで効率的な方法を提供します。 .NET Frameworkと共に導入され、コードセグメントの実行時間を追跡し、パフォーマンスを最適化し、アプリケーションをプロファイルするために開発者にとって貴重なツールとなっています。

2. 初期化と基本的な使用法

Stopwatchクラスの使用は簡単です。 使用を開始するには、まず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

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

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

経過時間は、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

出力:

C# Stopwatch (開発者向けの動作方法): 図1 - システムタイマー出力

3. Stopwatchの高度な機能

Stopwatchクラスは基本的な時間計測を超えた高度な機能をいくつか提供します。 これらの機能のいくつかを探ってみましょう。

3.1. Restartメソッド

Restartメソッドは、経過時間をゼロにリセットして停止を1つの操作で行う便利な方法です。 これは、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

出力:

C# Stopwatch (開発者向けの動作方法): 図2 - 再開出力

3.2. IsHighResolutionプロパティ

IsHighResolutionプロパティは、基盤となるタイミングメカニズムが高精度のパフォーマンスカウンターに基づいて経過時間を正確に測定しているかどうかを示します。このプロパティを確認することは、高精度のタイミングメソッドをサポートしないシステムを扱う際に有用です。

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

出力:

C# Stopwatch (開発者向けの動作方法): 図3 - 高解像度タイミング出力

3.3. Frequencyプロパティ

Frequencyプロパティは、ティックパー秒での基盤となるタイマーの周波数を返します。 この値は、経過ティックをミリ秒などの他の時間単位に変換するのに役立ちます。

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

出力:

C# Stopwatch (開発者向けの動作方法): 図4 - 周波数出力

3.4. ElapsedTicksプロパティ

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

出力:

C# Stopwatch (開発者向けの動作方法): 図5 - 経過ティック出力

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

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

IronPDFはHTMLをPDFに変換するためのユニークな能力を持ち、レイアウトとスタイルを保持します。 この機能は、レポート、請求書、またはドキュメントなどのWebコンテンツからPDFを作成するのに最適です。 HTMLファイル、URL、およびHTML文字列を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. C#でのIronPDFのインストール

C#アプリケーションでIronPDFの使用を開始するには、次の簡単な手順に従います。

  1. NuGetパッケージマネージャー: Visual StudioでC#プロジェクトを開き、パッケージマネージャーコンソールに移動します。 次のコマンドを実行してIronPDFをインストールします。

    Install-Package IronPdf

    また、IronPDF NuGetパッケージページを使用して"IronPdf"パッケージをダウンロードしてインストールすることも可能です。

  2. コードへの参照: インストールが成功したら、C#コードでIronPDFへの参照を追加します。

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

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

4.2. C# Stopwatchを使用してURLからのPDF作成時間を計測する

ここでは、IronPDFを使用してURLからPDFを作成するのにかかった時間を測定するためにC#のStopwatchクラスを使用する方法を示します。

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

この例では、IronPDFを初期化しHtmlToPdfクラスを使用して指定されたURLからPDFをレンダリングし、Stopwatchを使用して所要時間を測定します。 望むURLに合わせてurlToConvert変数を調整し、アプリケーションの要件に応じてPDF作成プロセスをさらにカスタマイズできます。

出力:

C# Stopwatch (開発者向けの動作方法): 図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チュートリアルで見つかります。

よくある質問

ストップウォッチクラスは C# アプリケーションのパフォーマンス最適化にどのように役立ちますか?

C# のストップウォッチクラスは、コードの実行時間を高精度で計測できるため、開発者がパフォーマンスのボトルネックを特定し、コードをより効率的に最適化できます。

C# 開発者に向けたストップウォッチクラスの高度な機能とは何ですか?

ストップウォッチクラスは、タイミングをリセットして再開始する Restart メソッド、システムのタイミング精度を確認する IsHighResolution、タイミング頻度を示す Frequency、細かい時間測定のための ElapsedTicks などの高度な機能を提供します。

Stopwatchクラスはすべてのシステムで高解像度のタイミングに使用できますか?

ストップウォッチクラスは、システムのハードウェアが提供する場合に高解像度 timing をサポートします。開発者は、システムが高解像度 timing を許可しているかを確認するために IsHighResolution プロパティをチェックできます。

C# アプリケーションで HTML コンテンツを PDF に変換するにはどうすればよいですか?

C# アプリケーションで HTML コンテンツを PDF に変換するには、IronPDF を使用できます。IronPDF は HTML のレイアウトとスタイルの整合性を保ち、レポートや請求書などの高品質な PDF ドキュメントの生成に適しています。

C# の PDF 生成とストップウォッチの統合方法は?

ストップウォッチを PDF 生成と統合するには、IronPDF での PDF レンダリングプロセスを開始する前にストップウォッチをスタートし、PDF が生成されたらストップウォッチを止めて、プロセス全体の時間を計測します。

Visual Studio C# プロジェクトで PDF ライブラリをインストールするプロセスは何ですか?

Visual Studio では、NuGet パッケージ マネージャーを使用して IronPDF をインストールできます。パッケージ マネージャー コンソールで Install-Package IronPdf コマンドを実行し、コード内で using IronPdf; を含めてその機能にアクセスします。

ストップウォッチクラスが C# でのパフォーマンス調整にとって重要な理由は何ですか?

ストップウォッチクラスは、コードの実行時間を測定して分析するのに役立つ高精度のタイミング機能を提供するため、パフォーマンス調整にとって重要です。この情報は、遅い操作を特定し、アプリケーションのパフォーマンスを向上させるのに不可欠です。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。