使用Stopwatch计算几间间隔

转自开开博客

在一个产品开发过程中或开发完成以后,可能需要计算执行一段代码所需的时间,比如一条数据库查询,通过计算代码执行所耗费的时间,以便对程序做出优化。通常做法是在代码执行之前和之后获取系统时间,然后相减。在C# .net编程中,Stopwatch
(System.Diagnostics)可以很方便的计算一段代码执行所耗费的时间;另外使用 Environment.TickCount也是不错的选择。本文主要结束Stopwatch类是使用方法。
看一段代码:

 C# Code
1
2
3
4
5
6
7
8
9
 
Stopwatch stopWatch =  new  Stopwatch();

stopWatch.Start();

//用Sleep函数代表你所要执行的代码段

System.Threading.Thread.Sleep(4000);

stopWatch.Stop();

//获取耗费的时间

TimeSpan ts = stopWatch.Elapsed;

Console.WriteLine(ts.TotalMilliseconds);

Console.ReadKey();

Start和Stop方法用于开始和结束watch,一旦调用了Stop后,就可以Elapsed属性获得
时间间隔。

输出

无标题1

Stopwatch的另外几个方法

StartNew:对watch清零,即设置Elapsed属性为0,并开始计时。
Restart:停止当前及时,清零,重新计时。
Reset:清零。

Stopwatch的两个属性:ElapsedMilliseconds和ElapsedTicks

ElapsedMilliseconds:时间间隔的毫秒数,这个好理解。
ElapsedTicks:通过vs查看定义,注释解释为“Gets the total elapsed time  measured by the current instance, in timer ticks.”,个人理解为以时钟周期为单位的时间间隔。这个时钟周期是什么,有点困惑,猜测可能是硬件时钟,msdn上说,如果硬件已安装和操作系统支持高分辨率性能计数器,则使用该计数器,否则使用系统 的计时器,来计算时间间隔。从图上看看到是一个很大的数字。

Stopwatch的Frequency属性

Frequency的注释解释为:Gets the frequency of the timer as the number of
ticks per second.时钟频率。我的机器的这个属性值是62500000,看下面计算
249976499 / 62500000 = 3.999623984
计算结果正好等于时间间隔,通过这个计算就不难理解Frequency和ElapsedTicks两个
属性的了。
另注:Win32 APIs 中 QueryPerformanceFrequency 和 QueryPerformanceCounter分别对应Stopwatch的Frequency属性和GetTimestamp函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值