カテゴリ: C# 更新日: 2025/11/28

C#でメソッドの実行時間を計測するテクニックを紹介!初心者でも簡単に理解できる

C#でメソッドの実行時間を計測するテクニックを紹介
C#でメソッドの実行時間を計測するテクニックを紹介

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

生徒

「先生、C#でプログラムの処理時間ってどうやって調べるんですか?」

先生

「いい質問ですね。処理時間を測るには『ストップウォッチ』を使うのが基本です。」

生徒

「ストップウォッチって、あの時間をはかるやつですか?」

先生

「そうです!C#には、時間計測のための専用のクラスが用意されているので、とても簡単に使えますよ。」

1. ストップウォッチで実行時間を計測しよう

1. ストップウォッチで実行時間を計測しよう
1. ストップウォッチで実行時間を計測しよう

C#では、System.Diagnosticsという機能の中にあるStopwatchクラスを使って、メソッドの実行時間を簡単に計測できます。

ストップウォッチは、時間をスタートしてから止めるまでの経過時間を記録します。私たちが日常で使うストップウォッチと同じイメージです。

では、C#でストップウォッチを使って、メソッドの処理時間を測るプログラムを作ってみましょう。

2. サンプルプログラムで実行時間を測ってみよう

2. サンプルプログラムで実行時間を測ってみよう
2. サンプルプログラムで実行時間を測ってみよう

以下の例では、100万回ループする処理の実行時間を計測します。


using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();

        // ストップウォッチをスタート
        stopwatch.Start();

        // 処理したいメソッド
        DoSomething();

        // ストップウォッチをストップ
        stopwatch.Stop();

        // 経過時間を表示(ミリ秒単位)
        Console.WriteLine($"処理にかかった時間: {stopwatch.ElapsedMilliseconds}ミリ秒");
    }

    static void DoSomething()
    {
        long total = 0;
        for (int i = 0; i < 1000000; i++)
        {
            total += i;
        }
    }
}

このプログラムでは、Stopwatchクラスを使って、DoSomething()メソッドの処理時間をミリ秒単位で表示しています。


処理にかかった時間: 5ミリ秒

※実行結果はパソコンの性能によって変わります。

3. Stopwatchクラスとは?

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

Stopwatch(ストップウォッチ)クラスは、C#の標準ライブラリのひとつで、正確な時間を測るための機能が備わっています。

主に以下のメソッドやプロパティがあります:

  • Start():時間の計測を開始
  • Stop():計測を停止
  • ElapsedMilliseconds:経過した時間をミリ秒で取得
  • Reset():時間をリセット(0に戻す)

このように、ストップウォッチはとてもシンプルで便利なクラスです。

4. よくある初心者のつまずきポイント

4. よくある初心者のつまずきポイント
4. よくある初心者のつまずきポイント

初心者が実行時間の計測でよくつまずくポイントをいくつか紹介します。

  • Stopwatchの使い方を忘れるStart()Stop()の順番が大切です。
  • 名前空間の指定漏れusing System.Diagnostics;を書かないとStopwatchが使えません。
  • 計測範囲が広すぎる:無関係な処理も一緒に計測してしまうと、正しい時間が測れません。

5. もう一歩!タイマー感覚で使える応用例

5. もう一歩!タイマー感覚で使える応用例
5. もう一歩!タイマー感覚で使える応用例

ストップウォッチを使えば、複数のメソッドの処理時間を比較することもできます。

例えば、処理Aと処理Bのどちらが速いかを比べたい場合、それぞれにストップウォッチを使って測ればすぐに分かります。


Stopwatch sw = new Stopwatch();

// 処理Aの計測
sw.Start();
ProcessA();
sw.Stop();
Console.WriteLine($"処理A: {sw.ElapsedMilliseconds}ミリ秒");

// 処理Bの計測
sw.Reset();
sw.Start();
ProcessB();
sw.Stop();
Console.WriteLine($"処理B: {sw.ElapsedMilliseconds}ミリ秒");

このようにして、プログラムの最適化(効率化)にも役立てることができます。

6. なぜ処理時間の計測が大切なのか?

6. なぜ処理時間の計測が大切なのか?
6. なぜ処理時間の計測が大切なのか?

プログラムは、「正しく動くこと」も大事ですが、「速く動くこと」もとても大事です。

たとえば、ゲームやアプリ、ウェブサービスなどでは、処理のスピードがユーザーの満足度に大きく関係します。

そのため、処理がどれくらい時間がかかっているのかを測ることができれば、無駄な部分を見つけて改善することができます。

これが「実行時間の計測」の重要な役割なのです。

まとめ

まとめ
まとめ

C#でメソッドの実行時間を計測する方法として、Stopwatchクラスを使うテクニックは非常にシンプルで効果的です。プログラムのパフォーマンスを把握するためには、こうした時間計測の手段を知っておくことが欠かせません。特に初心者にとっては、「何が重くて」「どこが遅いのか」を可視化できることが、学習の大きな助けになります。

記事内で紹介したStopwatchクラスは、Start()Stop()の二つのメソッドを中心に使いながら、ElapsedMillisecondsプロパティで時間を取得するという非常に分かりやすい構造です。また、必要に応じてReset()を使えば、連続して処理時間を測ることもできるため、複数の処理の比較にも役立ちます。

実際にコードを書くときには、測りたい処理だけを正確に囲むことが重要です。無関係な処理まで含めてしまうと、正確な実行時間が測れなくなってしまうため注意が必要です。さらに、System.Diagnosticsusingを忘れるとエラーになる点も、初心者がよくつまずくポイントのひとつです。

それでは、今回学んだ内容を応用したサンプルコードをもう一つ紹介しておきましょう。これは、繰り返し処理の回数を変えて、実行時間がどう変わるかを調べる簡単な実験プログラムです。


using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        TestLoop(100000);
        TestLoop(1000000);
        TestLoop(10000000);
    }

    static void TestLoop(int count)
    {
        Stopwatch sw = new Stopwatch();
        sw.Start();

        long total = 0;
        for (int i = 0; i < count; i++)
        {
            total += i;
        }

        sw.Stop();
        Console.WriteLine($"ループ回数: {count} → 所要時間: {sw.ElapsedMilliseconds}ミリ秒");
    }
}

このように、ループ回数を増やすことで、処理時間がどのように増加するかを確認できます。パフォーマンスの感覚を養うにはとても良い練習になります。また、現場での開発でも「この関数は遅いな」と感じたときに、すぐに計測して確かめられると、原因の切り分けや対策がスムーズになります。

実行時間の計測は、開発者にとって「見えない問題」を数値化するための大切な道具です。初めのうちは目に見えた変化がなくても、より大きなプログラムやデータ量が多い処理になってくると、少しの差がユーザー体験に大きな影響を与えます。だからこそ、こうしたツールを使って定期的に見直す姿勢を持つことが大切です。

先生と生徒の振り返り会話

生徒

「処理の速さって、目に見えないからあまり気にしてなかったんですが、測ってみるとすごく面白いですね!」

先生

「その気づきはとても大切です。速度はユーザーにとって体感的に影響する部分なので、見えないけれど重要なんですよ。」

生徒

Stopwatchって覚えやすいし、書き方も簡単でした!Start()Stop()で挟むだけでしたもんね。」

先生

「ええ、シンプルですが非常に強力です。たとえば、複数のアルゴリズムを比べるときなんかにも大活躍しますよ。」

生徒

「プログラムが速くなったかどうかを“体感”じゃなくて“数字”で見るのが大事なんですね。」

先生

「そのとおり。今後、大きなプロジェクトを作るときも、実行時間の測定は大切な作業になりますよ。今のうちに慣れておきましょうね。」

カテゴリの一覧へ
新着記事
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#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.4
Java&Spring記事人気No4
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
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演算子の違いと使い方