首页 > 代码库 > C#知识点-StopWatch-计时
C#知识点-StopWatch-计时
目录
- 简单介绍
- 基本用法
- 结尾
简单介绍
Stopwatch 可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间。一般用来测量代码执行所用的时间或者计算性能数据,在优化代码性能上可以使用Stopwatch来测量时间。
基本用法
使用的时候需要引用 System.Diagnostics 命名空间。先调用 Start 方法,然后调用 Stop 方法,最后使用 Elapsed 属性或者使用 ElapsedMilliseconds 属性得到运行时间(这两个属性的区别是前者得到的是TimeSpan实例,后者得到的是毫秒)。使用 IsRunning 可以确定 Stopwatch 的当前状态是正在运行还是已经停止。每次调用 Start 时开始累计运行时间计数;每次调用 Stop 时结束当前时间间隔测量,并冻结累计运行时间值。 使用 Reset 方法可以清除现有 Stopwatch 实例中的累计运行时间。
下面的示例演示如何使用 Stopwatch 类来确定应用程序的执行时间:
Stopwatch stopwatch = new Stopwatch(); //第一次计时 stopwatch.Start(); Console.WriteLine("Stopwatch is running:{0}",stopwatch.IsRunning);//判断当前Stopwatch的状态 System.Threading.Thread.Sleep(1000);//耗时操作 stopwatch.Stop(); Console.WriteLine("Using Elapsed output runTime:{0}", stopwatch.Elapsed.ToString());//这里使用时间差来输出 Console.WriteLine("Using ElapsedMilliseconds output runTime:{0}", stopwatch.ElapsedMilliseconds);//这里面使用毫秒来输出 Console.WriteLine("==================================================="); //第二次计时 stopwatch.Start(); System.Threading.Thread.Sleep(1000);//耗时操作 stopwatch.Stop(); Console.WriteLine("The second RunTime:{0}", stopwatch.ElapsedMilliseconds);//这里面使用毫秒来输出 Console.WriteLine("==================================================="); //第三次计时(这里使用了Restart) stopwatch.Restart();//这里使用Restart来启动计时(会把前面的时间清空) System.Threading.Thread.Sleep(1000);//耗时操作 stopwatch.Stop(); Console.WriteLine("Using Restart, so runTime:{0}", stopwatch.ElapsedMilliseconds);//这里面使用毫秒来输出 Console.ReadKey();
运行结果:
备注:程序中我 Sleep 了1000ms 但是输入结果是第一次是1002 第二次是2003 最后是1000,有一定的误差跟电脑性能和当前CPU的状态有关系(这里我是猜测的)。
在实际的项目中,有时候我们无法使用Console.WriteLine() 或者 MessageBox.Show()来得到运行时间,这时候我们就需要把时间写进一个文本文件中。
下面的示例演示如何使用 Stopwatch 类来确定应用程序的执行时间并把时间输出到文本文件中(这里我为了简单使用的是 StreamWriter):
const string path = @"D:\StopwatchDemo.txt"; using (StreamWriter streamWriter = new StreamWriter(path, true, Encoding.UTF8)) { streamWriter.WriteLine("Start"); streamWriter.Flush(); Stopwatch stopwatch = Stopwatch.StartNew(); System.Threading.Thread.Sleep(1000);//耗时操作 stopwatch.Stop(); streamWriter.WriteLine("RunTime:{0}", stopwatch.ElapsedMilliseconds);//以毫秒的形式写进文件 streamWriter.Flush(); }
运行结果:
结尾
C#中用于计时的操作不只是 Stopwatch 还有其他的如 Timer、TimeSpan 等。我这里只是用Stopwatch来举个例子。
C#知识点-StopWatch-计时