C# でのパフォーマンス テストの正確な時間測定

Muhammad Zeeshan 2023年10月12日
  1. ストップウォッチの概要
  2. C# でのパフォーマンス テストの正確な時間測定のために Stopwatch を実装する
C# でのパフォーマンス テストの正確な時間測定

この記事では、C# を使用してパフォーマンス テストの正確な時間を測定する方法を学習します。 System.Diagnostics 名前空間には、Stopwatch として知られる優れたクラスがあり、実行にかかる時間を簡単に測定できます。

ストップウォッチの概要を見てみましょう。

ストップウォッチの概要

Stopwatch 組み込みクラスは .Net フレームワークで利用可能になり、さまざまな状況で使用できます。 コードの最適化、いくつかの潜在的なソリューションからの最適なオプションの選択、またはパフォーマンス スパイクの特定を支援します。

言い換えれば、ストップウォッチは、特定のプロセスまたはアクティビティが完了するまでにかかる時間を決定できる単純なデバイスです。 時間が重要な役割を果たす状況では、コードを最適化すると役立ちます。

これは高レベルの精度を備えており、より複雑な他の監視ツールが利用できないか、単純化のために必要ない場合に役立ちます。

C# でのパフォーマンス テストの正確な時間測定のために Stopwatch を実装する

Stopwatch の基本的な実装を見てみましょう。 次の特性を使用して、経過した時間を判断できます。

  1. .Elapsed
  2. .ElapsedMilliseconds
  3. .ElapsedTicks

以下のデモでは、プロセスの経過時間を出力する .Elapsed 関数を実装しました。

  • Stopwatch ユーティリティを利用するには、次のライブラリをインポートします。
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Diagnostics;
    
  • Main() メソッドで、s という名前の Stopwatch オブジェクトを作成します。
    Stopwatch s = new Stopwatch();
    
  • プロセスの測定を開始します。
    s.Start();
    
  • 今すぐプロセス コードを記述します。 たとえば、文字列値を出力するために基本的な for() ループを使用しました。
    for (int i = 0; i < 5; i++) {
      Console.WriteLine("Myself M.Zeeshan, Let's Code!");
    }
    
  • コードを記述したら、プロセスの測定を停止します。
    s.Stop();
    
  • 最後に、.Elapsed 関数を使用して処理時間を確認します。
    Console.WriteLine("Time elapsed: {0}", s.Elapsed);
    

完全なソース コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace StopwatchbyZeeshan {
  class Program {
    static void Main(string[] args) {
      Stopwatch s = new Stopwatch();
      s.Start();
      for (int i = 0; i < 5; i++) {
        Console.WriteLine("Myself M.Zeeshan, Let's Code!");
      }
      s.Stop();
      Console.WriteLine("Total Time elapsed: {0}", s.Elapsed);
    }
  }
}

出力:

Myself M.Zeeshan, Let's Code!
Myself M.Zeeshan, Let's Code!
Myself M.Zeeshan, Let's Code!
Myself M.Zeeshan, Let's Code!
Myself M.Zeeshan, Let's Code!
Total Time elapsed: 00:00:00.0144367
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn