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控件从入门到精通》

相关推荐
用坏多个鼠标25 分钟前
Nacos和Nginx集群,项目启动失败问题
java·开发语言
满天星830357730 分钟前
【C++】右值引用和移动语义
开发语言·c++·redis·visual studio
消失的旧时光-194339 分钟前
c语言 内存管理(malloc, calloc, free)
c语言·开发语言
歪歪10040 分钟前
在C#中除了按属性排序,集合可视化器还有哪些辅助筛选的方法?
开发语言·前端·ide·c#·visual studio
weixin_307779131 小时前
C#程序实现将Teradata的存储过程转换为Snowflake的sql的存储过程
数据库·数据仓库·c#·云计算·迁移学习
李高钢1 小时前
c#获取当前程序所在目录避坑
开发语言·数据库·c#
Victory_20251 小时前
c# stateless介绍
c#
IT北辰1 小时前
用 Python 实现连续数据分组求和并回写
开发语言·python
凤山老林2 小时前
还在用JDK8?JDK8升级JDK11:一次价值千万的升级指南
java·开发语言·jvm·spring boot·后端·jdk
沐知全栈开发2 小时前
Servlet 数据库访问
开发语言