C# Stopwatch
问题一:前几天写并行计算的实际应用——通讯录的时候,用到了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的更多相关文章
- java stopwatch 功能
C#中有一个stopwatch的功能,主要是用来监测程序执行时间的.java之前一直都在用如下方式完成: public static void main(String[] args) { long s ...
- 计时器StopWatch示例
计时器 StopWatch stwatch = new StopWatch(getClass().getSimpleName()); try{ stwatch.start(joinPoint.getS ...
- 监测程序运行的时间,stopWatch
ArrayList arrInt = new ArrayList(); //用stopwatch来计时 运行的时间 Stopwatch watch = new Stopwatch(); watch.S ...
- [转]使用Stopwatch类实现高精度计时
对一段代码计时同查通常有三种方法.最简单就是用DateTime.Now来进行比较了,不过其精度只有3.3毫秒,可以通过DllImport导入QueryPerformanceFrequency和Quer ...
- Stopwatch 类
Stopwatch 为计时器的实现. 主要属性方法 属性和方法 说明 static GetTimestamp() 如果Stopwatch使用高分辨率的性能计数器,则返回该计数器的当前值:如果Stopw ...
- Mini projects #3 ---- Stopwatch: The Game
课程全名:An Introduction to Interactive Programming in Python,来自 Rice University 授课教授:Joe Warren, Scott ...
- C# StopWatch的使用
在做项目的时候,需要输出数据库操作的耗时,自己写了个方法.老大看到后,奇怪我为什么不用现成的.才知道有StopWatch这个类. 属性 名称 说明 Elapsed 获取当前实例测量得出的总 ...
- 使用.net Stopwatch class 来分析你的代码
当我们在调试,优化我们的代码的时候,想知道某段代码的真正的执行时间,或者我们怀疑某段代码,或是某几段代码执行比较慢, 需要得到具体的某段代码的具体执行时间的时候.有一个很好用的类Stopwatch. ...
- 一个简单的任务执行时间监视器 StopWatch
有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观, 如果想对执行的时间做进一步 ...
- C# 检测程序运行时间的方法,Stopwatch类
//需要引用命名空间,System.Diagnostics Stopwatch watch = new Stopwatch(); //实例化一个计时器 watch.Start(); //开始计时 #r ...
随机推荐
- 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]-最小内积(第八届北京师范大学程序设计竞赛决赛)
H. 最小内积 Time Limit: 1000ms Memory ...
- POJ1061青蛙的约会
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- HDU1711 最基础的kmp算法
Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], .... ...
- BZOJ1592: [Usaco2008 Feb]Making the Grade 路面修整
n<=2000个数,把它修改成不上升或不下降序列所要改变的数值总共最小是多少yy一下可得最后改成的数值肯定是原数组数值中的某一个感觉一下,相邻两个数如果有冲突要改,那肯定把他们改成两者之一的数才 ...
- 由八数码问题引入。对BFS有更深考虑
12号到今天共研究八数码问题poj1077,首先用的是普通BFS,遇到很多问题,开始用一个二级指针作为结构成员,知道了二级指针与二维数值名的不同!http://write.blog.csdn.net/ ...
- 分享一下然让显卡满血复活的小技巧(GTX)
分享一下然让显卡满血复活的小技巧 笔者在玩大型游戏卡顿15fps下载如下操作 GTX950玩大型游戏都不会卡帧率稳定在30fps 下载GeForce Experience下载更新最新驱动 下载如下程序 ...
- 转 asterisk app命令中文翻译
常规指令 Authenticate:鉴别用户 VMAuthenticate:根据“voicemail.conf”鉴别用户 Curl:接受外接URLs的修复.支持POSTing DUNDiLookup: ...
- Atom替换换行符
直接[Ctrl]+[F],然后选择正则,输入\n
- 纯Java Web项目下的Session共享方案收集(待实践)
1.使用filter方法存储 这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于tomcat ,而且实现的原理比较简单容易控制. 可以使用memcached-session-filter 官方网 ...
- 通过k8s(Kubernetes)搭建jmeter的压测环境master-slave架构,实现弹性伸缩
在k8s上部署jmeter的mater和slave,根据压测需求动态增减master和slave节点数量,即可以完成压测任务,又可以是资源利用最大化 https://blog.kubernauts.i ...