我声明了以下变量:
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个时间点。
我正在使用终于停止。这是正确的方法吗? 做这个?
答案 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);