2

私はc#でいくつかのアルゴリズムの問​​題を解決し、それらをコンソールアプリケーションとして実行しています。

アプリケーションの効率をチェックするために、実行時間がどのくらいかを確認したいと思います。

現在、プログラムの開始時と終了時に時間を印刷して時間差を計算していますが、オブザーバーの影響を減らす方法はありますか?
私が知らないいくつかの組み込みのツール/プラグイン?

4

3 に答える 3

3

Stopwatchそのために特別に設計されたクラスを使用する必要があります。

JIT時間の測定を回避するには、JITが実行できるように、何かを測定する前に、各アルゴリズムを少なくとも1回実行する必要があります。

アルゴリズムを測定するときは、それぞれを100回実行し、平均実行時間をとる必要があります。

于 2012-04-25T15:05:02.457 に答える
0

オブザーバーの影響による遅延の最も重要な原因は、それ自体を印刷することです。もう1つの潜在的な遅延は、デバッグメッセージのテキストフォーマットです。だから私は次のことを提案します:

  • ループ数とループあたりのステージ数を予測できる場合は、タイミング情報を格納する配列を作成します。そうでない場合は、動的リストを使用してください。
  • 実行中に、時間と追加情報をその配列またはリストに格納します。
  • 可能であれば、メッセージを時間と一緒に保存せず、コードを保存します。たとえば、1 =ステージ1、2=ステージ2などです。
  • 実行の最後に、すべての情報を画面またはファイルにダンプし、必要に応じてメッセージをフォーマットします。
于 2012-04-25T15:11:42.223 に答える
0

ストップウォッチクラスを使用します。例については、以下の方法を見てください。

using System.Diagnostics;

    public void yourAlgorithm()
        {

            Stopwatch timePerParse = Stopwatch.StartNew();
            /** -- TODO --**/

            timePerParse.Stop();
            Console.WriteLine(timePerParse.ElapsedMilliseconds);


        }
于 2014-03-01T20:23:40.390 に答える