Stopwatch计时器、秒表 C#
速度测试:
软件的性能和可测性是一个复杂的主题。要确保应用程序能够满足用户的期望,就需要在开发周期内考虑它的性能和可测性。这在设计阶段至关重要,一个糟糕的设计几乎肯定会导致糟糕的用户体验。然而,仅仅有好的设计也不能保证程序能够高效地运行,最终代码的质量同样重要。
量度一个运行时间较长的例程相当简单。如果一个过程会持续几分钟,只要一块腕表就可以记录它的时间了。比如一个执行时间为两分钟的过程,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#相关推荐
- java 秒表_JAVA计时器秒表程序代码
<JAVA计时器秒表程序代码>由会员分享,可在线阅读,更多相关<JAVA计时器秒表程序代码(7页珍藏版)>请在人人文库网上搜索. 1.Java计时器(秒表)功能:能实现计时,暂 ...
- StopWatch计时器
前言 开发中,为了评估性能,我们通常会使用System.currentTimeMillis() 去计算程序运行耗时 long startTime=System.currentTimeMillis(); ...
- Android实战第一篇——时钟+闹钟+计时器+秒表
学习了快一学期的Android了,之前的知识点都是零散的学习的,只有当我们真正的去把他们用起来的时候才会发现难点,自己才会独立尝试去解决某个问题.接下来是我的一个简单的多功能时钟的小实战(视频资源ht ...
- 【Time系列三】简单的计时器(秒表)
之前在 "for与while的洪荒之力" 中介绍到计时器,不过那样弄感觉好麻烦啊, 碰巧昨天学Java的时候,讲到求余可以用来求时间 ! for与while链接: http://w ...
- Google之Stopwatch 计时器
依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency ...
- 基于51单片机的倒计时器秒表定时器数码管显示原理图方案设计
系统的功能分析 (末尾附文件) 框架图: 原理图: 声光报警电路(低电平有效)设计 有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电 ...
- JS实现计时器/秒表功能
系统学习JS时的一个小练习 直接上代码吧,注释写得还算详细,就不赘述了,很简单的一个练习. <!DOCTYPE html> <html lang="zh-CN"& ...
- Spring源码:StopWatch 计时秒表
1.美图 2.概述 代码中常规的耗时处理方法为: long start = System.currentTimeMillis(); log.info("耗时{}毫秒", Syste ...
- 60秒倒计时器 秒表 c语言程序,用单片机设计一个两位LED显示的秒表,按下计时键时,进行60s倒计时显示...
满意答案 w86586tk3y 2017.09.25 采纳率:57% 等级:8 已帮助:214人 #include sbit P3_5 =P3^5; unsigned char code dis ...
- C#中计时器Stopwatch的使用
场景 C#中创建计时器用来记录程序运行的时间. Stopwatch 字段 Frequency 获取以每秒计时周期数表示的计时器频率. 此字段为只读. IsHighResolution 指示计时器是 ...
最新文章
- 单片机学习从入门到入土?这3个关键点导致!
- Python基础——Anaconda的安装使用
- 跨链(2)跨链技术“侧链(Sidechains)”
- DevExpress第三方控件汉化的全部代码和使用方法
- log4j2动态修改日志级别及拓展性使用
- Remove Assignments to Parameters(移除对参数的赋值)
- AMD ATI Radeon 显卡被曝多个漏洞
- Ext JS 4倒计时:开发者预览版
- visualvm远程监控jvm_别再说你不会 JVM 性能监控和调优了,看完这篇再发言
- 空间apiLinux系统调用及用户编程接口(API)学习
- 怎样将数据发送到前端_大数据从哪里来?
- 23岁的Python,这些年在编程语言排行榜上直线上升的原因是什么?很多人都不解
- Mac桌面文件怎么恢复?
- Bailian2706 麦森数【大数】
- 计算机教研评课记录,信息技术2.0 | 评课磨课共成长 信息技术促进步 ——东光县第二实验小学信息技术2.0数学组 课例研讨...
- 写给初学者的6条网页设计安全配色指南
- java实现图片平铺倾斜水印效果--转载
- 使用ADB命令卸载安卓设备上的应用
- 【CC】| 创建三维模型教程
- 【OpenCV】01-OpenCV的数据类型
热门文章
- 软件设计师学习笔记-程序设计语言与语言处理程序基础
- 昆明二级计算机考试报名时间2015,2016上半年云南昆明理工大学计算机等级考试报名通知...
- 用 js判断 一个数是否是素数(质数)_小学五年级下册数学公式,孩子考试用的上!...
- 2021-2022自然语言处理会议/期刊 整理 #建议收藏#
- mysql创建存储过程
- python项目代码规范
- 山羊拉丁文cpp解法
- 中国移动应用内计费平台服务器接口示例代码之“非官方”的一些说明
- Nightmare bfs
- unity 将.asset资源转成png