C#で経過時間を計測する方法を完全ガイド!初心者でもわかるStopwatchクラス入門
生徒
「プログラムの処理が終わるまでにどれくらい時間がかかっているか知りたいんですが、どうすれば計測できますか?」
先生
「C#には、処理の経過時間を正確に測るためのStopwatchという便利な仕組みがありますよ。」
生徒
「ストップウォッチって、手で時間を測るあのストップウォッチですか?プログラムでそんなことできるんですね!」
先生
「そうなんです。名前の通り、プログラムの中にストップウォッチを用意して、Startで測り始めてStopで止める仕組みです。では一緒に使い方を見ていきましょう。」
1. Stopwatchクラスとは?
C#のStopwatchクラスは、プログラムの中で経過時間を測定するための専用ツールです。たとえば、「データの読み込みに何秒かかったか」「計算処理がどれくらい時間を使っているか」を調べたいときに役立ちます。
Stopwatchは、キッチンタイマーやスマホのストップウォッチと同じで、スタートしてストップするだけのシンプルな仕組みです。難しい設定をしなくても、簡単に経過時間を確認できます。
Stopwatchが特に便利なのは、単純に時間を見るだけでなく、ミリ秒単位の細かい時間まで測れることです。これはパソコンがとても高速で処理を行うため、少しの時間でも正確に測る必要があるからです。
2. Stopwatchを使った基本的な計測方法
まずは、Stopwatchを使ったもっとも基本的なサンプルから見ていきましょう。実際のプログラムで時間を測るには、以下の流れで使います。
- Stopwatchのインスタンスを作る
- Startメソッドで計測開始
- 何かの処理を行う
- Stopメソッドで計測終了
- Elapsedプロパティで経過時間を確認
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
Stopwatch sw = new Stopwatch();
sw.Start();
// 計測したい処理
for (int i = 0; i < 1000000; i++)
{
int x = i * 2;
}
sw.Stop();
Console.WriteLine($"経過時間: {sw.ElapsedMilliseconds}ミリ秒");
}
}
上のコードでは、100万回の計算を行うのにかかった時間をミリ秒で表示しています。
たとえば実行結果は次のようになります。
経過時間: 12ミリ秒
3. Elapsed・ElapsedMilliseconds・ElapsedTicksの違い
Stopwatchには、計測した時間を取り出すためのいくつかのプロパティがあります。初心者の方はまず「ElapsedMilliseconds」だけでも問題ありませんが、それぞれの違いを知っておくとより便利に使えます。
● Elapsed
TimeSpanで経過時間を返す仕組みです。時間・分・秒をまとめて扱いたいときに便利です。
● ElapsedMilliseconds
ミリ秒(1秒=1000ミリ秒)単位で時間を取得します。多くの処理時間計測はこれで十分です。
● ElapsedTicks
Tick(ティック)というもっと細かい単位で時間を扱う方法です。Tickは時間の最小単位で、Stopwatch内部の精度によって決まります。通常の用途ではあまり使いません。
4. 計測をリセットする方法
StopwatchにはResetメソッドがあり、これを使うと経過時間をリセットしてゼロの状態に戻せます。連続して時間を測るときなどに役立ちます。
Stopwatch sw = new Stopwatch();
sw.Start();
// 何かの処理
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
// リセットして再測定
sw.Reset();
sw.Start();
// 別の処理
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
5. using System.Diagnostics が必要な理由
Stopwatchクラスは、C#の中でもSystem.Diagnosticsという性能測定やログ関連の機能をまとめた場所にあります。そのため、Stopwatchを使うときは必ずプログラムの先頭に次の一行を追加する必要があります。
using System.Diagnostics;
これは「Stopwatchを使いますよ」とC#に教えるための宣言です。もし書き忘れると、Stopwatchが存在しないというエラーになってしまいます。
6. 処理の最適化やパフォーマンス改善にも役立つ
Stopwatchは学習のためだけでなく、実際の開発でもとてもよく使われます。なぜなら、プログラムの速度を確認して改善するパフォーマンスチューニングに欠かせないからです。
たとえば、「Aという書き方とBという書き方のどちらが速いか」といった比較をするときに、Stopwatchで計測すればすぐに違いが分かります。これは、快適に動くアプリを作るうえでとても大事なポイントです。