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 在基础计时器机制中对计时器的计时周期进行计数,从而测量运行时间。 如果安装的硬件和操作系统支持高分辨率性能计数器,则 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执行查询缓存的问题造成。

C# Stopwatch详解相关推荐

  1. java stopwatch_Java计时新姿势StopWatch详解

    一.最简单的计时 在我们的程序中不免需要对某一个运算或者方法进行计时,以便我们来观察该运算或方法是否符合我们的预期,所以在我们刚开始接触 Java 的时候都能写出类似下面这样的代码来计时: publi ...

  2. java stopwatch_Spring StopWatch使用实例详解

    这篇文章主要介绍了Spring StopWatch使用实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 StopWatch简单的秒表,允许多个 ...

  3. SpringBoot启动过程详解

    Spring Boot通常有一个名为*Application的入口类,在入口类里有一个main方法,这个main方法其实就是一个标准的java应用的入口方法. 在main方法中使用SpringAppl ...

  4. IDL文件详解[转]

    IDL文件详解[转] ���¼���ԭʼ��ҳ ��ӡ IDL详解 - Alex_ - 博客园 Question: 什么是IDL和MIDL? Answer: IDL是接口定义语言. MIDL是Micr ...

  5. Guava-RateLimiter秒杀限流技术详解

    使用场景 系统使用下游资源时,需要考虑下游对资源受限.处理能力,在下游资源无法或者短时间内无法提升处理性能的情况下,可以使用限流器或者类似保护机制,避免下游服务崩溃造成整体服务的不可用. 常用算法 常 ...

  6. 关于日期正则表达式的思路详解

    1        概述 首先需要说明的一点,无论是Winform,还是Webform,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和校验还是用日历控件来实现比较好. 前几天在CSDN ...

  7. 各种图片编码格式详解(bmp,jpg,png)

    图像基本数据结构 要讲图片格式还先得从图像的基本数据结构说起.在计算机中, 图像是由一个个像素点组成,像素点就是颜色点,而颜色最简单的方式就是用RGB或RGBA表示, 如图所示 (图1) (图2) 如 ...

  8. AutoMapper详解

    AutoMapper详解 零.文章目录 一.AutoMapper详解 1.概述 (1)什么是AutoMapper 简单来说,AutoMapper是以.NET(C#)语言开发的一个轻量的处理一个实体对象 ...

  9. C#高级--反射详解

    C#高级–反射详解 零.文章目录 一.反射是什么 1.C#编译运行过程 高级语言->编译->dll/exe文件->CLR/JIT->机器码 2.原理解析 metadata:元数 ...

最新文章

  1. .git文件夹_Git服务器安装- windows
  2. centos uwsgi配置_centos下配置nginx+uwsgi运行py以及静态文件的加载
  3. mysql连接失败 ping通_哭~问:oracle 数据库有时会突然连接失败,但能ping通主机...
  4. IIS7.0下 HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求...
  5. Android学习笔记:TabHost 和 FragmentTabHost(转)
  6. leetcode 6 --- convertZ
  7. ArXiv最火深度学习框架:TensorFlow第一,PyTorch第二!|湾区人工智能
  8. STM8学习笔记---NTC热敏电阻的使用
  9. 2021李宏毅机器学习课程笔记——Adversarial Attack
  10. 程序性能分析php,php代码的性能分析
  11. 拓端tecdat|R语言对HullWhite短期利率模型仿真
  12. 【ENVI】FLAASH大气校正工具中比例因子说明
  13. 300字总结计算机flash,flash实训报告心得(共10篇).docx
  14. 成长的痛苦:流播放服务令音乐人版税受损
  15. OpenCV 表盘指针自动读数
  16. 使用KMS激活软件导致浏览器呗篡改解决办法
  17. 连接Ubuntu 出现 Algorithm Negotiation failed 错误
  18. 自动化测试之:python+unittest+selenium
  19. git 提交时报错:Branch ‘master‘ set up to track remote branch ‘master‘ from ‘origin‘.
  20. touchgfx程序_TouchGFX在原子STM32F429阿波罗板 开发与移植 简易教程

热门文章

  1. 为什么品牌现在需要进入元宇宙?
  2. CSS横向滚动条自定义样式
  3. vue上传图片及其注意事项
  4. RadioButton 状态选择器
  5. 高频射频计算机电缆,射频电缆用途介绍
  6. STM32基于时间片轮询机制
  7. 关于导入电信天翼物联网sdk(ctg-ag-sdk-core,ag-sdk-biz-58193.tar.gz)运行时报NoClassDefFoundError
  8. 【机器学习】——学习的基本分类:算法模拟的根本出发点!
  9. 【Android】最新主流新闻app功能实现。仿网易,搜狐等新闻客户端实现展示
  10. anaconda及jupyter安装配置