C#には、処理の時間を簡単に計測できるSystem.Diagnostics.Stopwatchクラスがあります。この記事では、その使い方をサンプルコードとともに説明します。
サンプルコード
このサンプルコードを実行すると、指定した処理(この例では3秒間の待機)にかかった時間をミリ秒単位で計測し、結果をコンソールに表示します。
using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
// ストップウォッチのインスタンスを作成
Stopwatch stopwatch = new Stopwatch();
// ストップウォッチを開始
stopwatch.Start();
// 計測したい処理 (ここでは3秒間待機する例)
Thread.Sleep(3000); // 3000ミリ秒 = 3秒
// ストップウォッチを停止
stopwatch.Stop();
// 経過時間を取得して表示
Console.WriteLine($"処理にかかった時間: {stopwatch.ElapsedMilliseconds}ミリ秒");
// 処理が完了するのを待つための入力待ち
Console.ReadLine();
}
}
実行結果の例
処理にかかった時間: 3008ミリ秒
時間の単位を変更したい場合
Stopwatch.Elapsedプロパティは、TimeSpanオブジェクトを返します。これにより、経過時間を日、時間、分、秒、ミリ秒など、さまざまな形式で取得することができます。以下に、経過時間の表示方法を複数の例として示します。
秒単位で表示
経過時間を秒単位で表示するには、Elapsed.TotalSeconds
プロパティを使用します。このプロパティは、経過時間を秒単位で、小数点以下も含めて返します。
Console.WriteLine($"処理にかかった時間: {stopwatch.Elapsed.TotalSeconds}秒");
ミリ秒単位で表示
経過時間をミリ秒単位で表示するには、先ほど示したElapsedMilliseconds
プロパティを使用します。これは、経過時間をミリ秒単位の整数で返します。
Console.WriteLine($"処理にかかった時間: {stopwatch.ElapsedMilliseconds}ミリ秒");
分単位で表示
経過時間を分単位で表示するには、Elapsed.TotalMinutes
プロパティを使用します。これは、経過時間を分単位で、小数点以下も含めて返します。
Console.WriteLine($"処理にかかった時間: {stopwatch.Elapsed.TotalMinutes}分");
時間と分と秒の組み合わせで表示
経過時間をより詳細に表示するには、Elapsed
プロパティから時間、分、秒を個別に取得し、組み合わせて表示することができます。
Console.WriteLine($"処理にかかった時間: {stopwatch.Elapsed.Hours}時間 {stopwatch.Elapsed.Minutes}分 {stopwatch.Elapsed.Seconds}秒");
まとめ
本記事では、C#において、処理時間を計測するストップウォッチの使い方について紹介しました。