当前位置: 首页 > news >正文

C#使用Stopwatch实现执行耗时及性能监测

Stopwatch类提供一组方法和属性,一般用来测量代码运行消耗时间,以便获取更多代码运行性能上的数据。以下主要介绍C#中用Stopwatch实现执行耗时及性能监测的方法。

1、Stopwatch简介

1)命名空间

using System.Diagnostics;

2)字段

字段

字段说明

Frequency

获取以每秒刻度数表示的计时器频率。

此字段为只读。

IsHighResolution

指示计时器是否基于

高分辨率性能计数器

。 此字段为只读。

3)属性

属性

属性说明

Elapsed

获取当前实例测量得出的总运行时间。

ElapsedMilliseconds

获取当前实例测量得出的总运行时间

(以毫秒为单位)。

ElapsedTicks

获取当前实例测量得出的总运行时间

(用计时器刻度表示)。

IsRunning

获取一个值,

该值表示 Stopwatch 计时器是否正在运行。

4)方法

方法

方法说明

Equals(Object)

确定指定对象是否等于当前对象。

GetHashCode()

作为默认哈希函数。

GetTimestamp()

获取计时器机制中的当前刻度数。

GetType()

获取当前实例的 Type。

MemberwiseClone()

创建当前 Object 的浅表副本。

Reset()

停止时间间隔测量,并将运行时间重置为零。

Restart()

停止时间间隔测量,将运行时间重置为零,

然后开始测量运行时间。

Start()

开始或继续测量某个时间间隔的运行时间。

StartNew()

初始化新的 Stopwatch 实例,

将运行时间属性设置为零,然后开始测量运行时间。

Stop()

停止测量某个时间间隔的运行时间。

ToString()

返回表示当前对象的字符串。

2、Stopwatch的使用

Stopwatch类相关字段、属性、方法的使用示例,可以参考代码如下,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;namespace ConsoleApplication
{class Program{static void Main(string[] args){//创建Stopwatch实例Stopwatch sw = new Stopwatch();//开始计时sw.Start();for (int i = 0; i < 100; i++){Console.WriteLine(i);}//停止计时sw.Stop();Console.WriteLine("用时:" + sw.ElapsedMilliseconds + "");//重置 停止时间间隔测量,并将运行时间重置为0sw.Reset();Console.WriteLine("用时:" + sw.ElapsedMilliseconds + "");//重启 停止时间间隔测量,并将运行时间重置为0,然后重新开始           测量运行时间sw.Restart();for (int i = 0; i < 100; i++){Console.WriteLine(i);}sw.Stop();//获取当前实例测量得出的总运行时间(以毫秒为单位)Console.WriteLine("用时:" + sw.ElapsedMilliseconds + "");//获取当前实例测量得出的总运行时间Console.WriteLine("用时:" + sw.Elapsed);//获取当前实例测量得出的总运行时间(用计时器刻度表示)。Console.WriteLine(sw.ElapsedTicks);Console.Read();//开始计时sw.Start();System.Threading.Thread.Sleep(1000);  //耗时操作 测试代码,休眠1000毫秒//结束计时sw.Stop();Console.WriteLine(sw.ElapsedMilliseconds);     //输出:消耗的毫秒Console.WriteLine(sw.Elapsed.ToString());      //输出:时:分:秒//重置秒表sw.Reset();Console.WriteLine("Reset End");//再次开始计时,或者直接用**Restart**函数直接重置并开始sw.Start();System.Threading.Thread.Sleep(1200);//第二次计时结束sw.Stop();Console.WriteLine(sw.ElapsedMilliseconds);if (Stopwatch.IsHighResolution){Console.WriteLine("使用系统的高分辨率性能计数器的计时的操作.");}else{Console.WriteLine("使用DateTime类的计时操作.");}long frequency = Stopwatch.Frequency;Console.WriteLine("计时器频率,以滴答/秒为单位 = {0}", frequency);long nanosecPerTick = (1000L * 1000L * 1000L) / frequency;Console.WriteLine("计时器在{0}纳秒以下范围内准确", nanosecPerTick.ToString());}}
}

相关文章:

  • JavaScript类型检测【全】
  • 20240116-唯一出现次数
  • Java后端学习路线
  • ssh -T git@github.com Connection timed out 解决方案-自测有效
  • 【征稿进行中|见刊快速】2024年社会发展与艺术鉴赏国际学术会议(IACSDAA 2024)
  • uniapp如何实现跨端适配
  • vite+vue3创建项目及开发常见的问题
  • 【数据结构和算法】反转链表
  • 在国产操作系统下管理MYSQL数据库
  • zabbix其他配置
  • 微信小程序实战-03翻页时钟-3
  • Chrome 浏览器 Manifest V3 版本中 scripting API 解析
  • pytorch学习(一)线性模型
  • C++设计模式(李建忠)笔记1
  • 【特征工程】分类变量:MultiLabelBinarizer对多标签数据进行编码
  • 10个确保微服务与容器安全的最佳实践
  • Electron入门介绍
  • EventListener原理
  • git 常用命令
  • github指令
  • GraphQL学习过程应该是这样的
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Netty源码解析1-Buffer
  • SpringBoot几种定时任务的实现方式
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Webpack 4x 之路 ( 四 )
  • win10下安装mysql5.7
  • 大整数乘法-表格法
  • 动态规划入门(以爬楼梯为例)
  • 多线程 start 和 run 方法到底有什么区别?
  • 分布式任务队列Celery
  • 马上搞懂 GeoJSON
  • 面试遇到的一些题
  • 前端攻城师
  • 让你的分享飞起来——极光推出社会化分享组件
  • 深度学习在携程攻略社区的应用
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 怎么将电脑中的声音录制成WAV格式
  • 自制字幕遮挡器
  • const的用法,特别是用在函数前面与后面的区别
  • #14vue3生成表单并跳转到外部地址的方式
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (4)Elastix图像配准:3D图像
  • (pytorch进阶之路)扩散概率模型
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (转)关于pipe()的详细解析
  • ./configure,make,make install的作用
  • .Mobi域名介绍
  • .NET基础篇——反射的奥妙
  • .NET使用存储过程实现对数据库的增删改查
  • @EnableWebMvc介绍和使用详细demo
  • @Not - Empty-Null-Blank
  • [ C++ ] STL---stack与queue