问题一:前几天写并行计算的实际应用——通讯录的时候,用到了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的更多相关文章

  1. java stopwatch 功能

    C#中有一个stopwatch的功能,主要是用来监测程序执行时间的.java之前一直都在用如下方式完成: public static void main(String[] args) { long s ...

  2. 计时器StopWatch示例

    计时器 StopWatch stwatch = new StopWatch(getClass().getSimpleName()); try{ stwatch.start(joinPoint.getS ...

  3. 监测程序运行的时间,stopWatch

    ArrayList arrInt = new ArrayList(); //用stopwatch来计时 运行的时间 Stopwatch watch = new Stopwatch(); watch.S ...

  4. [转]使用Stopwatch类实现高精度计时

    对一段代码计时同查通常有三种方法.最简单就是用DateTime.Now来进行比较了,不过其精度只有3.3毫秒,可以通过DllImport导入QueryPerformanceFrequency和Quer ...

  5. Stopwatch 类

    Stopwatch 为计时器的实现. 主要属性方法 属性和方法 说明 static GetTimestamp() 如果Stopwatch使用高分辨率的性能计数器,则返回该计数器的当前值:如果Stopw ...

  6. Mini projects #3 ---- Stopwatch: The Game

    课程全名:An Introduction to Interactive Programming in Python,来自 Rice University 授课教授:Joe Warren, Scott ...

  7. C# StopWatch的使用

    在做项目的时候,需要输出数据库操作的耗时,自己写了个方法.老大看到后,奇怪我为什么不用现成的.才知道有StopWatch这个类. 属性       名称 说明 Elapsed 获取当前实例测量得出的总 ...

  8. 使用.net Stopwatch class 来分析你的代码

    当我们在调试,优化我们的代码的时候,想知道某段代码的真正的执行时间,或者我们怀疑某段代码,或是某几段代码执行比较慢, 需要得到具体的某段代码的具体执行时间的时候.有一个很好用的类Stopwatch. ...

  9. 一个简单的任务执行时间监视器 StopWatch

    有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观, 如果想对执行的时间做进一步 ...

  10. C# 检测程序运行时间的方法,Stopwatch类

    //需要引用命名空间,System.Diagnostics Stopwatch watch = new Stopwatch(); //实例化一个计时器 watch.Start(); //开始计时 #r ...

随机推荐

  1. javascript异步处理

    http://www.ruanyifeng.com/blog/2015/04/generator.html

  2. 实体类与实体DTO类之间的转换

    实体类与实体DTO类之间的转换 实体类与实体DTO类之间的转换 1.通过使用第三方序列化反序列化工具Newtonsoft.Json 2.通过反射实现 3.通过表达式目录树加字典缓存实现 4. 通过表达 ...

  3. 汕头市赛srm10 T2

    n个数,分组,数Ai要在至少含有Ai个数的组,求最多分多少组. 方法一:大的数应该尽量跟大的在一起,这样才能让小的出现很多很多组,所以从大到小排序,给当前序列中最大的数x分x个数.代码如下: #inc ...

  4. x1 carbon 扩展屏 模糊

    x1 carbon 扩展屏 模糊,扩展屏是dell的屏,分辨率最大是1920*1080, x1最大是2560*1440. 不论是通过DP mini转VGA,还是HDMI,输出都是模糊,只有复制屏幕的时 ...

  5. 给Ubuntu更换成163的源(sources.list)Unable to locate package

    Refer to http://www.crifan.com/ubuntu_change_sources_list_to_163/ 1. backup /etc/apt/sources.list 2. ...

  6. Free Web Application Firewall相关资料

    http://www.freewaf.org/solution/#1 http://baike.soso.com/v60659982.htm

  7. 线程&线程池

    线程 进程和线程: 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位. 注意:两个都是过程 线程一个特点: 一个进程中,多个线程共享资源 线程和进程区 ...

  8. centos 中找不到 php-config

    两种解决方式: 1.CentOS6 PHP extension install: Cannot find php-config. Please use --with-php-config=PATH 2 ...

  9. Educational Codeforces Round 50 (Rated for Div. 2)F. Relatively Prime Powers

    实际上就是求在[2,n]中,x != a^b的个数,那么实际上就是要求x=a^b的个数,然后用总数减掉就好了. 直接开方求和显然会有重复的数.容斥搞一下,但实际上是要用到莫比乌斯函数的,另外要注意减掉 ...

  10. HDU 1244 【DP】

    题意: 中文. 思路: 先初步处理,用give-take求出每个城市剩的钱. 求解问题转化成使得和不小于0的最长连续字串. 枚举起点,然后当该起点加的和为负时开始枚举下一起点.(这个状态的转移) 2W ...