zoukankan      html  css  js  c++  java
  • 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();
    View Code

      运行结果:

       

      备注:程序中我 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();
                }
    View Code

      运行结果:

      

    结尾

        C#中用于计时的操作不只是 Stopwatch 还有其他的如 Timer、TimeSpan 等。我这里只是用Stopwatch来举个例子。  

      

  • 相关阅读:
    为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
    http的响应码200,404,302,500表示的含义分别是?
    说一下 session 的工作原理?
    session 和 cookie 有什么区别?
    什么是 MyBatis?
    SpringMVC 工作原理?
    报表数据填报中的合法性校验
    报表数据填报中的自动计算
    如何用报表工具实现树状层级结构的填报表
    在报表中录入数据时如何实现行列转换
  • 原文地址:https://www.cnblogs.com/daidaibao/p/4197141.html
Copyright © 2011-2022 走看看