C#项目实战经验——计时方法总结

前言

我们在开发C#程序的过程中经常需要计算某段程序执行的时间,比如调用的某个算法的时间,这时候我们就需要利用计时工具,本文就是详细介绍在C#中我们常用哪些计时工具。

1、计时方法---StopWatch

在C#中我们可以利用Stopwatch这个类来实现计时功能,需要引用System.Diagnostics命名空间,具体使用步骤如下:

第一步、首先new一个Stopwatch 这个类的对象,然后调用这个类中的方法Start,此时开始计时,然后使用 Thread.Sleep(2000);模拟程序执行了2秒;

第二步、调用stopwatch.Stop();来停止计时

第三步、调用stopwatch.Elapsed.TotalMilliseconds;来获取从Start到Stop花费了多少时间,单位是毫秒

csharp 复制代码
 Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            Thread.Sleep(2000);
            stopwatch.Stop();
            double time = stopwatch.Elapsed.TotalMilliseconds;
            Console.WriteLine(time);

输出 结果:

csharp 复制代码
2001.4197

从最终的输出结果看是花费了将近2000毫秒。

如果我们想继续利用这个stopwatch对象 计时的话,我们可以撰写如下代码:

csharp 复制代码
 stopwatch.Restart();
            Thread.Sleep(3000);
            stopwatch.Stop();
            time = stopwatch.Elapsed.TotalMilliseconds;
            Console.WriteLine(time);

可以看出我们调用了Restart方法,这个方法的作用就是让计时器重新计时,这样我们就可以对这个stopwatch进行重复利用了。

最终输出结果是将近3秒,这是因为我使用了 Thread.Sleep(3000);模拟程序运行了3秒。

csharp 复制代码
3000.8774

2、计时方法---DateTime

由于DateTime有一个Now属性,这个属性的作用是记录当前系统的时间,所以我们想要实现计时功能的话,可以计算两次时间的时间差就可以,代码如下:

csharp 复制代码
 DateTime startTime = DateTime.Now;
 Thread.Sleep(2000);
 DateTime stopTime = DateTime.Now;
 time = (stopTime - startTime).TotalMilliseconds;
 Console.WriteLine(time);

代码逻辑如下:

第一步、记录刚开始时间

第二步、记录结束时间

第三步、然后让两个时间相减,然后获取TotalMilliseconds属性,这个属性的意思是:将时间换算成多少毫秒,比如时间是3秒50毫秒,则最终输出值:3050毫秒。

输出结果:

csharp 复制代码
2004.3153

年入30万+C#上位机实战必备教程推荐

1、《C#串口通信从入门到精通》

2、《 C#与PLC通信从入门到精通 》

3、《C# Modbus通信从入门到精通》

4、《 C#Socket通信从入门到精通 》

5、《C# MES通信从入门到精通》

6、《winform控件从入门到精通》

相关推荐
代码小库几秒前
【2026前端最新面试题——day10】JavaScript 高频面试题
开发语言·前端·javascript
零陵上将军_xdr9 分钟前
后端转全栈学习-Day4-JavaScript 基础-2
开发语言·javascript·学习
小科先生22 分钟前
初学者安装java
java·开发语言
ID_1800790547342 分钟前
小红书笔记评论 API 接口深度解析(带全套 JSON 示例・技术实战版)
java·开发语言·windows
折戟不必沉沙43 分钟前
C++四种类型转换是什么
开发语言·c++
天青色等烟雨..43 分钟前
AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表
开发语言·人工智能·r语言
AI玫瑰助手1 小时前
Python函数:递归函数的定义与阶乘案例实现
开发语言·python·信息可视化
qq_366086221 小时前
测试接口传参数时,放在Header和Body中后台接收参数的区别
java·开发语言·前端
Jun6261 小时前
QT(8)-线程锁
java·开发语言
ZC跨境爬虫2 小时前
跟着 MDN 学 JavaScript day_2:JavaScript 初体验
开发语言·前端·javascript·学习·ecmascript