カテゴリ: C# 更新日: 2025/12/01

C#で経過時間を計測する方法を完全ガイド!初心者でもわかるStopwatchクラス入門

C#で経過時間を計測する方法(Stopwatchクラス)
C#で経過時間を計測する方法(Stopwatchクラス)

先生と生徒の会話形式で理解しよう

生徒

「プログラムの処理が終わるまでにどれくらい時間がかかっているか知りたいんですが、どうすれば計測できますか?」

先生

「C#には、処理の経過時間を正確に測るためのStopwatchという便利な仕組みがありますよ。」

生徒

「ストップウォッチって、手で時間を測るあのストップウォッチですか?プログラムでそんなことできるんですね!」

先生

「そうなんです。名前の通り、プログラムの中にストップウォッチを用意して、Startで測り始めてStopで止める仕組みです。では一緒に使い方を見ていきましょう。」

1. Stopwatchクラスとは?

1. Stopwatchクラスとは?
1. Stopwatchクラスとは?

C#のStopwatchクラスは、プログラムの中で経過時間を測定するための専用ツールです。たとえば、「データの読み込みに何秒かかったか」「計算処理がどれくらい時間を使っているか」を調べたいときに役立ちます。

Stopwatchは、キッチンタイマーやスマホのストップウォッチと同じで、スタートしてストップするだけのシンプルな仕組みです。難しい設定をしなくても、簡単に経過時間を確認できます。

Stopwatchが特に便利なのは、単純に時間を見るだけでなく、ミリ秒単位の細かい時間まで測れることです。これはパソコンがとても高速で処理を行うため、少しの時間でも正確に測る必要があるからです。

2. Stopwatchを使った基本的な計測方法

2. 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の違い

3. Elapsed・ElapsedMilliseconds・ElapsedTicksの違い
3. Elapsed・ElapsedMilliseconds・ElapsedTicksの違い

Stopwatchには、計測した時間を取り出すためのいくつかのプロパティがあります。初心者の方はまず「ElapsedMilliseconds」だけでも問題ありませんが、それぞれの違いを知っておくとより便利に使えます。

● Elapsed

TimeSpanで経過時間を返す仕組みです。時間・分・秒をまとめて扱いたいときに便利です。

● ElapsedMilliseconds

ミリ秒(1秒=1000ミリ秒)単位で時間を取得します。多くの処理時間計測はこれで十分です。

● ElapsedTicks

Tick(ティック)というもっと細かい単位で時間を扱う方法です。Tickは時間の最小単位で、Stopwatch内部の精度によって決まります。通常の用途ではあまり使いません。

4. 計測をリセットする方法

4. 計測をリセットする方法
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 が必要な理由

5. using System.Diagnostics が必要な理由
5. using System.Diagnostics が必要な理由

Stopwatchクラスは、C#の中でもSystem.Diagnosticsという性能測定やログ関連の機能をまとめた場所にあります。そのため、Stopwatchを使うときは必ずプログラムの先頭に次の一行を追加する必要があります。


using System.Diagnostics;

これは「Stopwatchを使いますよ」とC#に教えるための宣言です。もし書き忘れると、Stopwatchが存在しないというエラーになってしまいます。

6. 処理の最適化やパフォーマンス改善にも役立つ

6. 処理の最適化やパフォーマンス改善にも役立つ
6. 処理の最適化やパフォーマンス改善にも役立つ

Stopwatchは学習のためだけでなく、実際の開発でもとてもよく使われます。なぜなら、プログラムの速度を確認して改善するパフォーマンスチューニングに欠かせないからです。

たとえば、「Aという書き方とBという書き方のどちらが速いか」といった比較をするときに、Stopwatchで計測すればすぐに違いが分かります。これは、快適に動くアプリを作るうえでとても大事なポイントです。

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方