码迷,mamicode.com
首页 > Windows程序 > 详细

C# Stopwatch

时间:2015-11-16 12:30:12      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

问题一:前几天写并行计算的实际应用——通讯录的时候,用到了stopwatch来计时,发现这个计时是真正的计时。

    Stopwatch stopwatch = new Stopwatch();
    TimeSpan timeSpan;
    double time1,time2;
    stopwatch.Start();
    f1();//花费时间t1
    stopwatch.Stop();
    timeSpan = stopwatch.Elapsed;
    time1 = timeSpan.TotalMilliseconds;//time1=t1

    stopwatch.Start();
    f2();//花费时间t2
    stopwatch.Stop();
    timeSpan = stopwatch.Elapsed;
    time2 = timeSpan.TotalMilliseconds;//time2=t1+t2

其中time2的时间是t1+t2,与我预想的tim2=t2 不同。。。

解决方法:

1.使用不同的计时器stopwatch 和stopwatch2,如代码:

    Stopwatch stopwatch = new Stopwatch();
    Stopwatch stopwatch2 = new Stopwatch();
    TimeSpan timeSpan;
    double time1,time2;
    stopwatch.Start();
    f1();//花费时间t1
    stopwatch.Stop();
    timeSpan = stopwatch.Elapsed;
    time1 = timeSpan.TotalMilliseconds;//time1=t1

    stopwatch2.Start();
    f2();//花费时间t2
    stopwatch2.Stop();
    timeSpan = stopwatch2.Elapsed;
    time2 = timeSpan.TotalMilliseconds;//time2=t2

2.使用reset函数清空计时器stopwatch,也很容易理解,代码略。

 

问题二:见代码:

    Stopwatch stopwatch = new Stopwatch();
    Stopwatch stopwatch2 = new Stopwatch();
    TimeSpan timeSpan;
    double time1,time2;
    stopwatch.Start();
    f1();//花费时间t1
    stopwatch.Stop();
    timeSpan = stopwatch.Elapsed;
    time1 = timeSpan.TotalMilliseconds;//time1=t1

    stopwatch2.Start();
    f2();//花费时间t2
    stopwatch.Stop();//此处应该为stopwatch2.Stop();的。。。
    timeSpan = stopwatch2.Elapsed; time2 = timeSpan.TotalMilliseconds;//time2=t2

在第二个计时器stopwatch2结束时,把stopwatch2 敲成了stopwatch,那么问题来了,我的程序竟然没受到影响。。。
原因是:当stopwatch实例正在运行或已停止时,可以查询运行时间属性。

就是这句话,也就是说

虽然stopwatch2没有stop,但是我代码中的这句话timeSpan = stopwatch2.Elapsed; 把当前所记录的时间提取了出来。。。

所以说我记录的时间没受影响,即time1=t1 ,time2=t2.

 

C# Stopwatch

标签:

原文地址:http://www.cnblogs.com/bofengyu/p/4968290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!