C# Stopwatch详解
来源:互联网 发布:修真淘宝大户无弹 编辑:程序博客网 时间:2024/06/10 06:38
namespace System.Diagnostics{ // // 摘要: // 提供一组方法和属性,可用于准确地测量运行时间。 public class Stopwatch { // // 摘要: // 获取以每秒计时周期数表示的计时器频率。此字段为只读。 public static readonly long Frequency; // // 摘要: // 指示计时器是否基于高分辨率性能计数器。此字段为只读。 public static readonly bool IsHighResolution; // // 摘要: // 初始化 System.Diagnostics.Stopwatch 类的新实例。 public Stopwatch(); // // 摘要: // 获取当前实例测量得出的总运行时间。 // // 返回结果: // 一个只读的 System.TimeSpan,用于表示当前实例测量得出的总运行时间。 public TimeSpan Elapsed { get; } // // 摘要: // 获取当前实例测量得出的总运行时间(以毫秒为单位)。 // // 返回结果: // 一个只读长整型,表示当前实例测量得出的总毫秒数。 public long ElapsedMilliseconds { get; } // // 摘要: // 获取当前实例测量得出的总运行时间(用计时器计时周期表示)。 // // 返回结果: // 一个只读长整型,表示当前实例测量得出的计时器计时周期的总数。 public long ElapsedTicks { get; } // // 摘要: // 获取一个指示 System.Diagnostics.Stopwatch 计时器是否在运行的值。 // // 返回结果: // 如果 System.Diagnostics.Stopwatch 实例当前正在运行,并且在对某个时间间隔的运行时间进行测量,则该值为 true;否则为 false。 public bool IsRunning { get; } // // 摘要: // 获取计时器机制中的当前最小时间单位数。 // // 返回结果: // 一个长整型,表示基础计时器机制中的计时周期计数器值。 public static long GetTimestamp(); // // 摘要: // 对新的 System.Diagnostics.Stopwatch 实例进行初始化,将运行时间属性设置为零,然后开始测量运行时间。 // // 返回结果: // 刚刚开始测量运行时间的 System.Diagnostics.Stopwatch。 public static Stopwatch StartNew(); // // 摘要: // 停止时间间隔测量,并将运行时间重置为零。 public void Reset(); // // 摘要: // 停止时间间隔测量,将运行时间重置为零,然后开始测量运行时间。 public void Restart(); // // 摘要: // 开始或继续测量某个时间间隔的运行时间。 public void Start(); // // 摘要: // 停止测量某个时间间隔的运行时间。 public void Stop(); }}
Stopwatch的命名空间是using System.Diagnostics;
从上文看到Restart()等于Reset()加Start()
使用流程如下
Stopwatch sw = new Stopwatch();//开始计时sw.Start();//重新设置为零sw.Reset();//重新设置并开始计时sw.Restart();//结束计时sw.Stop();//获取运行时间间隔TimeSpan ts = sw.Elapsed;//获取运行时间[毫秒]long times = sw.ElapsedMilliseconds;//获取运行的总时间long times2 = sw.ElapsedTicks;//判断计时是否正在进行[true为计时]bool isrun = sw.IsRunning;//获取计时频率long frequency = Stopwatch.Frequency;
Stopwatch 在基础计时器机制中对计时器的计时周期进行计数,从而测量运行时间。 如果安装的硬件和操作系统支持高分辨率性能计数器,则 Stopwatch 类将使用该计数器来测量运行时间; 否则,Stopwatch 类将使用系统计数器来测量运行时间。 使用 Frequency 和 IsHighResolution 字段可以确定实现 Stopwatch 计时的精度和分辨率。
TimeSpan 对象表示时间间隔或持续时间,按正负天数、小时数、分钟数、秒数以及秒的小数部分进行度量。用于度量持续时间的最大时间单位是天。更大的时间单位(如月和年)的天数不同,因此为保持一致性,时间间隔以天为单位来度量。
TimeSpan 对象的值是等于所表示时间间隔的刻度数。一个刻度等于 100 纳秒,TimeSpan 对象的值的范围在 MinValue 和 MaxValue 之间。
TimeSpan 值可以表示为 [-]d.hh:mm:ss.ff,其中减号是可选的,它指示负时间间隔,d 分量表示天,hh 表示小时(24 小时制),mm 表示分钟,ss 表示秒,而 ff 为秒的小数部分。即,时间间隔包括整的正负天数、天数和剩余的不足一天的时长,或者只包含不足一天的时长。例如,初始化为 1.0e+13 刻度的 TimeSpan 对象的文本表示“11.13:46:40”,即 11 天,13 小时,46 分钟和 40 秒。
举个例子
Stopwatch sw = new Stopwatch();//开始计时sw.Start();//5.SqlQuery()查询var sql = "select * from UserInfo where age > 15 order by age desc";object[] obj = new object[1];var info = db.UserInfo.SqlQuery(sql, obj);foreach (var item in info){ richTextBox1.Text += "姓名:" + item.Name + " 年龄:" + item.Age + "\n";} //结束计时sw.Stop();//获取运行时间[毫秒]long times = sw.ElapsedMilliseconds;richTextBox1.Text += "执行查询总共使用了" + times + "毫秒";
第一次查询
姓名:老马 年龄:55姓名:飞哥 年龄:22姓名:李四 年龄:20姓名:张三 年龄:18执行查询总共使用了500毫秒
第二次查询
姓名:老马 年龄:55姓名:飞哥 年龄:22姓名:李四 年龄:20姓名:张三 年龄:18执行查询总共使用了4毫秒
为什么两次查询耗时差距那么大?
应为EF和sql执行查询缓存的问题造成。
飞哥的专栏
2 0
- C# Stopwatch详解
- C# Stopwatch详解
- Stopwatch计时器、秒表 C#
- C#中的Stopwatch
- .NET C# Stopwatch用法
- C# Stopwatch类用法
- Stopwatch计时器、秒表 C#
- C# Stopwatch 类
- C# Stopwatch的用法
- Stopwatch
- Stopwatch
- Stopwatch
- StopWatch
- Stopwatch
- 用Stopwatch测试C#代码执行速度
- C#计时利器:Stopwatch的使用
- C# Stopwatch 类测量脚本运行时间
- C#中各种计时器 Stopwatch、TimeSpan
- bzoj 1877: [SDOI2009]晨跑 费用流
- SpringMVC 实现国际化与图片验证码
- 怎么在xib创建的视图里面动态修改字体
- LeetCode 226. Invert Binary Tree
- 最短路径—Dijkstra算法和Floyd算法
- C# Stopwatch详解
- Linux的运行级别和chkconfig用法
- Android和iOS知识结构
- Apps上线过程中需要的资料
- Android源码是如何自动生成apk文件的
- 浅谈函数(一)
- mybatis DBmanager
- Requirements for Ethernet VPN (EVPN)
- WeakHashMap深入理解