有没有更好的方法让我在C#中计时?

时间:2012-08-28 09:11:22

标签: c#

我声明了以下变量:

    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。问题是在某些方面 代码我可能只需要t1,在其他方面我可能需要 超过5个时间点。

我正在使用终于停止。这是正确的方法吗? 做这个?

3 个答案:

答案 0 :(得分:2)

您可以使用词典,以便将值存储在名称/键下。

请注意,将值添加到集合中可能会花费一些时间来影响您的测量。

所以你可能想要这样做:

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

终于可以了

答案 1 :(得分:1)

只需使用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内并没有真正做到这一点,因为就在此之前,你无条件地捕捉和吞噬所有类型的例外,这是非常非常糟糕的

答案 2 :(得分:1)

您可以将它们存储在List<long>

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

他们只是

times.Add(stopwatch.ElapsedMilliseconds);