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 的多头。问题是在某些代码区域我可能只需要 t1 而在其他区域我可能需要超过 5 个时间点。

我正在使用 finally 停止。这是正确的方法吗?

4

3 回答 3

2

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

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

所以你可能想要这样做:

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

终于可以了

于 2012-08-28T09:14:36.877 回答
1

只需使用 aList<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 回答