0

次の変数を宣言しました。

    private Stopwatch stopwatch;
    private long t1, t2, t3, t4, t5;

私はストップウォッチを次のように使用しています:

         try {
            stopwatch = Stopwatch.StartNew();
            get1();
            t1 = stopwatch.ElapsedMilliseconds;
            anotherGet();
            t2 = stopwatch.ElapsedMilliseconds;
            vm.Detail = anotherAnotherGet();
            t3 = stopwatch.ElapsedMilliseconds;
        } catch (Exception e) {
            log(e);
        } finally {
            Stopwatch.Stop();
            if (vm.Detail.Count() > 0) {
                return PartialView("Details", vm);
            } else {
                return Content("No records found");
            }
        }

1-5 という名前の long ではなく、自分の時間を保存するより良い方法はありますか? 問題は、コードの一部の領域では t1 のみが必要な場合があり、他の領域では 5 つ以上のタイミング ポイントが必要な場合があることです。

私は停止のためにfinallyを使用しています。それはこれを行う正しい方法ですか?

4

3 に答える 3

2

名前/キーの下に値を保存できるように、辞書を使用できます。

コレクションに値を追加すると、測定に影響を与える可能性のある時間がかかる場合があることに注意してください。

だからあなたはこれをしたいかもしれません:

stopwatch = Stopwatch.StartNew(); 
get1(); 
stopwatch.Stop();
timings.Add("t1", stopwatch.ElapsedMilliseconds); 
stopwatch.Start();

最後はOKです

于 2012-08-28T09:14:36.877 に答える
1

a を使用して、List<long>必要な回数だけ保存します。

var times = new List<long>();
stopwatch = Stopwatch.StartNew();
get1();
times.Add(stopwatch.ElapsedMilliseconds);
anotherGet();
times.Add(stopwatch.ElapsedMilliseconds);
vm.Detail = anotherAnotherGet();
times.Add(stopwatch.ElapsedMilliseconds);

クリーンアップ ロジックを内部にfinally配置しても、ここでは実際には何もしません。その直前に、すべての種類の例外を無条件にキャッチして飲み込んでいるからです。これは非常に悪いことです。

于 2012-08-28T09:13:43.320 に答える
1

あなたはそれらをList<long>

List<long> times = new List<long>();

そしてそれらは単純に

times.Add(stopwatch.ElapsedMilliseconds);
于 2012-08-28T09:14:56.150 に答える