.NET2.0也提供了这样一个秒表:Stopwatch类,它可以比较精确地测量时间。
速度测试:
软件的性能和可测性是一个复杂的主题。要确保应用程序能够满足用户的期望,就需要在开发周期内考虑它的性能和可测性。这在设计阶段至关重要,一个糟糕的设计几乎肯定会导致糟糕的用户体验。然而,仅仅有好的设计也不能保证程序能够高效地运行,最终代码的质量同样重要。
量度一个运行时间较长的例程相当简单。如果一个过程会持续几分钟,只要一块腕表就可以记录它的时间了。比如一个执行时间为两分钟的过程,10%的改善能够节省12秒,这是很容易去确定的。
而如果要测量一个非常短暂的过程,就要考虑更好的精确性了。比如有一些很小的例程,它们的运行时间可能只有千分之一秒,但会被调用100万次,这样的累积效果就明显了。在.NET framework的先前版本中,需要使用Windows API函数,而在.NET framework 2.0中,微软引入了Stopwatch(它就是我们的秒表)类来简化时间的量度任务。
Stopwatch类:
使用Stopwatch类来量度时间非常简单。跟现实生活中的秒表一样,这个类的对象也能够对计数器进行开始、停止、归零(重置)操作,不过它可比一般的秒表精确多了,它能够精确到微秒(也就是百万分之一秒)。
示例代码:
要演示Stopwatch的使用还是来段代码吧。下面是一个控制台应用程序,它将1到100万之间的所有整数累加:

usingSystem;

namespaceStopWatchClass
{
classProgram
{
staticvoidMain(string[] args)
{

longtotal=0;

for(inti=1; i<=10000000; i++)
{
total+=i;
}
}
}
}

添加Stopwatch对象:
Stopwatch类位于System.Diagnostics命名空间。下面是添加对象后的代码:

usingSystem;
using System.Diagnostics;

namespaceStopWatchClass
{
classProgram
{
staticvoidMain(string[] args)
{
Stopwatch timer = new Stopwatch();
longtotal=0;

for(inti=1; i<=10000000; i++)
{
total+=i;
}
}
}
}

控制Stopwatch对象:
Stopwatch提供了几个方法用以控制Stopwatch对象。Start方法开始一个计时操作,Stop方法停止计时。此时如果第二次使用 Start方法,将继续计时,最终的计时结果为两次计时的累加。为避免这种情况,在第二次计时前用Reset方法将对象归零。这三个方法都不需要参数。代码是:

usingSystem;
usingSystem.Diagnostics;

namespaceStopWatchClass
{
classProgram
{
staticvoidMain(string[] args)
{
Stopwatch timer=newStopwatch();
longtotal=0;

timer.Start();
for(inti=1; i<=10000000; i++)
{
total+=i;
}

timer.Stop();
}
}
}

读取Stopwatch结果:
在结束计时后下一步就是读取计时结果了。Stopwatch类提供了以下属性:

  • Elapsed:返回一个TimeSpan对象,表示计时时间间隔;
  • ElapsedMilliseconds:返回计时经过的微秒数,精确度稍差,适合于稍长一点的计时;
  • ElapsedTicks: 返回计时经过的计时器刻度(timer tick)数。计时器刻度是Stopwatch对象可能的最小量度单位。计时器刻度时间的长度由特定的计算机和操作系统确定。Stopwatch对象的 Frequency静态字段的值表示一秒所包含的计时器刻度数。注意它与TimeSpan的Ticks属性所用的时间单位的区别。

应当根据计时任务的情况选择其中的一个属性。在我们的示例程序中,Elapsed属性提供了需要的精确度,用它来输出经过的微秒数。这也是TimeSpan的最高精确度了。
下面是最终的程序代码:

usingSystem;
usingSystem.Diagnostics;

namespaceStopWatchClass
{
classProgram
{
staticvoidMain(string[] args)
{
Stopwatch timer=newStopwatch();
longtotal=0;

timer.Start();
for(inti=1; i<=10000000; i++)
{
total+=i;
}

timer.Stop();

decimal micro = timer.Elapsed.Ticks / 10m;
Console.WriteLine("Execution time was {0:F1} microseconds.", micro);
}
}
}

另外,使用IsRunning属性可以查看一个Stopwatch实例是否正在计时,使用StartNew方法可以开始一个新的计时器。

转载于:https://www.cnblogs.com/kevinGao/archive/2011/12/09/2671027.html

Stopwatch计时器、秒表 C#相关推荐

  1. java 秒表_JAVA计时器秒表程序代码

    <JAVA计时器秒表程序代码>由会员分享,可在线阅读,更多相关<JAVA计时器秒表程序代码(7页珍藏版)>请在人人文库网上搜索. 1.Java计时器(秒表)功能:能实现计时,暂 ...

  2. StopWatch计时器

    前言 开发中,为了评估性能,我们通常会使用System.currentTimeMillis() 去计算程序运行耗时 long startTime=System.currentTimeMillis(); ...

  3. Android实战第一篇——时钟+闹钟+计时器+秒表

    学习了快一学期的Android了,之前的知识点都是零散的学习的,只有当我们真正的去把他们用起来的时候才会发现难点,自己才会独立尝试去解决某个问题.接下来是我的一个简单的多功能时钟的小实战(视频资源ht ...

  4. 【Time系列三】简单的计时器(秒表)

    之前在 "for与while的洪荒之力" 中介绍到计时器,不过那样弄感觉好麻烦啊, 碰巧昨天学Java的时候,讲到求余可以用来求时间 ! for与while链接: http://w ...

  5. Google之Stopwatch 计时器

    依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency ...

  6. 基于51单片机的倒计时器秒表定时器数码管显示原理图方案设计

    系统的功能分析 (末尾附文件) 框架图: 原理图: 声光报警电路(低电平有效)设计 有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电 ...

  7. JS实现计时器/秒表功能

    系统学习JS时的一个小练习 直接上代码吧,注释写得还算详细,就不赘述了,很简单的一个练习. <!DOCTYPE html> <html lang="zh-CN"& ...

  8. Spring源码:StopWatch 计时秒表

    1.美图 2.概述 代码中常规的耗时处理方法为: long start = System.currentTimeMillis(); log.info("耗时{}毫秒", Syste ...

  9. 60秒倒计时器 秒表 c语言程序,用单片机设计一个两位LED显示的秒表,按下计时键时,进行60s倒计时显示...

    满意答案 w86586tk3y 2017.09.25 采纳率:57%    等级:8 已帮助:214人 #include sbit P3_5 =P3^5; unsigned char code dis ...

  10. C#中计时器Stopwatch的使用

    场景 C#中创建计时器用来记录程序运行的时间. Stopwatch 字段 Frequency  获取以每秒计时周期数表示的计时器频率. 此字段为只读. IsHighResolution  指示计时器是 ...

最新文章

  1. 单片机学习从入门到入土?这3个关键点导致!
  2. Python基础——Anaconda的安装使用
  3. 跨链(2)跨链技术“侧链(Sidechains)”
  4. DevExpress第三方控件汉化的全部代码和使用方法
  5. log4j2动态修改日志级别及拓展性使用
  6. Remove Assignments to Parameters(移除对参数的赋值)
  7. AMD ATI Radeon 显卡被曝多个漏洞
  8. Ext JS 4倒计时:开发者预览版
  9. visualvm远程监控jvm_别再说你不会 JVM 性能监控和调优了,看完这篇再发言
  10. 空间apiLinux系统调用及用户编程接口(API)学习
  11. 怎样将数据发送到前端_大数据从哪里来?
  12. 23岁的Python,这些年在编程语言排行榜上直线上升的原因是什么?很多人都不解
  13. Mac桌面文件怎么恢复?
  14. Bailian2706 麦森数【大数】
  15. 计算机教研评课记录,信息技术2.0 | 评课磨课共成长 信息技术促进步 ——东光县第二实验小学信息技术2.0数学组 课例研讨...
  16. 写给初学者的6条网页设计安全配色指南
  17. java实现图片平铺倾斜水印效果--转载
  18. 使用ADB命令卸载安卓设备上的应用
  19. 【CC】| 创建三维模型教程
  20. 【OpenCV】01-OpenCV的数据类型

热门文章

  1. 软件设计师学习笔记-程序设计语言与语言处理程序基础
  2. 昆明二级计算机考试报名时间2015,2016上半年云南昆明理工大学计算机等级考试报名通知...
  3. 用 js判断 一个数是否是素数(质数)_小学五年级下册数学公式,孩子考试用的上!...
  4. 2021-2022自然语言处理会议/期刊 整理 #建议收藏#
  5. mysql创建存储过程
  6. python项目代码规范
  7. 山羊拉丁文cpp解法
  8. 中国移动应用内计费平台服务器接口示例代码之“非官方”的一些说明
  9. Nightmare bfs
  10. unity 将.asset资源转成png