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 ...
随机推荐
- 关于构造函数什么值传递给他的实例,只有this和prototype
var a= function (){var bb = 12; this.aa ="xxx"}; a.aa="www"; a.prototype.cc=&quo ...
- JavaEE JDBC 了解数据库连接池
了解数据库连接池 @author ixenos 数据库连接是有限的资源,如果用户需要离开应用一段时间,那么他占用的连接就不应该保持开放状态: 另一方面,每次查询都获取连接并在随后关闭它的代价也很高. ...
- BGP表
BGP是一种基于策略的路由选择协议,让AS能够根据多种BGP属性来控制数据流的传输.运行BGP的路由器交换被称为路径矢量或者属性的NLRI.路径矢量信息中包含一个BGP-AS号列表称为AS-PATH属 ...
- SkyWalking 分布式追踪系统
随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个 ...
- php责任链模式
php 责任链模式 又叫职责链模式.包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,它也知道应该把自己不能处理的命令对象交下一个处理对象,该模式还描述了往该链添加新的处理对象的 ...
- MongoDB基本管理命令操作
1. 查看所有数据库: show dbs 或: show databases 注意: 该命令不会显示新创建的空数据库,若想显示需要向空数据库插入一些数据. MongoDB中默认的数据库为test,若果 ...
- python学习之 - re模块
re模块功能:实现字符串匹配. 元字符 描述\ 将下一个字符标记符.或一个向后引用.或一个八进制转义符.例如,“\\n”匹配\n.“\n”匹配换行符.序列“\\”匹配“\”而“\(”则匹配“(”.即相 ...
- java构造方法的特点和理解--三只坚果
构造方法的特点:1.首先构造方法是基于类,名字必须与类的名字完全相同(构造方法一般是自己编写的类需要初始化)2.每个类都有一个默认的构造方法,既无参数又无返回值,其作用是使用new操作符创建新对象后初 ...
- F - The Minimum Length
F - The Minimum Length HUST - 1010 #include<cstdio> #include<cstring> #include<iostre ...
- Springmvc 前台传递参数到后台需要数据绑定
我们知道,当提交表单时,controller会把表单元素注入到command类里,但是系统注入的只能是基本类型,如int,char,String.但当我们在command类里需要复杂类型,如Integ ...