写点什么

C# 使用秒表类 Stopwatch 对程序的运行速度测试

作者:IC00
  • 2022-10-29
    湖南
  • 本文字数:2401 字

    阅读完需:约 8 分钟

C# 使用秒表类Stopwatch对程序的运行速度测试

前言

你知道 C#运行一个一百次循环要多久吗,一千次,一万次呢?今天这篇文章我们对这个问题去探索一下,顺便去学习一下 Stopwatch 秒表类,我们是使用这个类去对一个程序做一个运行速度的测试,在 C#中这个类用的比较少,至少我是今天才用,虽然不是用的很灵活,但是我们可以一起去学一下,相信大家可以举一反三,哈哈哈,那么小弟在这献丑了,大家有更好的技术或者更好的方法,我们一起探讨一下,创作不易,大家点赞关注评论收藏,你的点赞是我创作的动力,也是我学习的方向!!!


界面设计

简单的设计一下,就触发我们的按钮,具体效果我们从后台观看,大家直接滑到效果即可。


Stopwatch 方法

秒表实例可以测量一个间隔的经过时间,或跨多个间隔的总经过时间。在典型的秒表方案中,您调用 Start 方法,然后最终调用 Stop 方法,然后使用 Elapsed 属性检查经过的时间。秒表实例正在运行或已停止;使用 IsRunning 来确定 Stopwatch 的当前状态。使用 Start 开始测量经过的时间;使用 Stop 停止测量经过的时间。通过属性 Elapsed、ElapsedMilliseconds 或 ElapsedTicks 查询经过的时间值。您可以在实例运行或停止时查询经过的时间属性。秒表运行时,经过时间属性稳定增加;当实例停止时,它们保持不变。默认情况下,秒表实例的经过时间值等于所有测量时间间隔的总和。每次对 Start 的调用都从累积的经过时间开始计数;每次调用 Stop 都会结束当前的间隔测量并冻结累积的经过时间值。使用 Reset 方法清除现有 Stopwatch 实例中的累积经过时间。秒表通过计算底层计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则 Stopwatch 类使用该计数器来测量经过的时间。否则,Stopwatch 类使用系统计时器来测量经过的时间。使用频率和 IsHighResolution 字段来确定秒表计时实现的精度和分辨率秒表类有助于在托管代码中操作与时间相关的性能计数器。具体来说,可以使用频率字段和 GetTimestamp 方法代替非托管 Windows APIQueryPerformanceFrequency 和 QueryPerformanceCounter.


效果展示

之所以有些输出是 0,是因为它的时间连毫秒都不到,所以才会为零,因为 ElapsedMilliseconds 是以毫秒为单位,所以看不到,如果运行太快连毫秒都不到建议使用 ElapsedTicks,时间戳还是比较好用的。


代码逻辑

在复制代码的时候注意要把,命名空间给构造出来,使用 ALT+Enter 或者你复制 using System.Diagnostics;这个命名空间在你的项目粘贴就可以了。


using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace IC00test823{    public partial class Form2 : Form    {        public Form2()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            Stopwatch TestTime = new Stopwatch(); //实列化Stopwatch类,如果你是复制记得按ALT+Enter键导入命名空间using System.Diagnostics;            TestTime.Start();                    //使用Start()方法开始计时            for (int i = 0; i < 100; i++)  //运行循环100次            {                int m = 0;                m = i;            }            TestTime.Stop(); //使用Stop()方法暂停计时            Console.WriteLine("100次的所用时间:" + TestTime.ElapsedMilliseconds);//看看重置后的间隔时间            Console.WriteLine("100次的所用时间:" + TestTime.ElapsedTicks);//我们看看时间戳可能时间太快都不足毫秒的单位            TestTime.Reset();   //使用Reset()对秒表类进行重置,从新从零开始            Console.WriteLine("重置之后的所用时间:" + TestTime.ElapsedMilliseconds);//看看重置后的间隔时间            Console.WriteLine("重置之后的所用时间:" + TestTime.ElapsedTicks);//我们看看时间戳可能时间太快都不足毫秒的单位            TestTime.Restart();       //使用Restart方法是重置为零,并且开始计时相当于Reset()+Start()效果            for (int i = 0; i < 1000; i++)            {                int m = 0;                m = i;            }            TestTime.Stop();            Console.WriteLine("1000次的所用时间:" + TestTime.ElapsedMilliseconds );    //看看运行1000次的时间            Console.WriteLine("100次的所用时间:" + TestTime.Elapsed);//看看当前实例测量的总经过时间。            TestTime.Restart();       //使用Restart方法是重置为零,并且开始计时相当于Reset()+Start()效果            for (int i = 0; i < 10000; i++)            {                int m = 0;                m = i;            }            TestTime.Stop();            Console.WriteLine("10000次的所用时间:" + TestTime.ElapsedMilliseconds );    //看看运行1000次的时间            Console.WriteLine("1000次的所用时间:" + TestTime.Elapsed);//看看当前实例测量的总经过时间。            Console.WriteLine("1000次的所用时间:" + TestTime.ElapsedTicks);//实例测量的总经过时间,是个整数,Elapsed的另一种格式        }    }}
复制代码

总结

这篇文章比较简单,当然我们前面的问题,相信大家心里也已经知道答案了,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!



发布于: 刚刚阅读数: 3
用户头像

IC00

关注

一个热爱生活,喜欢拍照的热血青年 2022-07-14 加入

一个想学习技术的小盆友,想努力更文,争取今年发100篇

评论

发布
暂无评论
C# 使用秒表类Stopwatch对程序的运行速度测试_C#_IC00_InfoQ写作社区