• Stopwatch 类【转】


    一般我们想要测试使用那种方法或着那种类型效率更高,使用Stopwatch类进行测试就可以,我也是现在才知道,汗一个。

    先来看个小示例,如下。

    前提,先引用using System.Diagnostics;命名空间。

     1        //实例化一个sw
     2 Stopwatch sw = new Stopwatch();
     3 //开始计数
     4 sw.Start();
     5
     6 //实例化一个sb
     7 StringBuilder sb = new StringBuilder();
     8
     9 //循环
    10 for (int i = 0; i < 10000; i++)
    11 {
    12 //追加
    13 sb.Append(i);
    14 }
    15 //输出所用时间 毫秒
    16 Console.WriteLine(sw.ElapsedMilliseconds);
    17
    18 //重置为0
    19 sw.Reset();
    20 //开始计数
    21 sw.Start();
    22 //字义一个 s字符串
    23 string s = "";
    24
    25 //循环
    26 for (int i = 0; i < 10000; i++)
    27 {
    28 s = s + i;
    29
    30 }
    31 //输出所用时间 毫秒
    32 Console.WriteLine(sw.ElapsedMilliseconds);
    33
    34 //重置为0
    35 sw.Reset();
    36 //开始计数
    37 sw.Start();
    38 //字义一个 b字符串
    39 string b = "";
    40 //循环
    41 for (int i = 0; i < 10000; i++)
    42 {
    43 b += i;
    44
    45 }
    46 //输出所用时间 毫秒
    47 Console.WriteLine(sw.ElapsedMilliseconds);
    48 Console.ReadLine();

    下面在介绍几个属性。

              Elapsed:返回一个TimeSpan对象,表示计时时间间隔;

              ElapsedMilliseconds:返回计时经过的毫秒数,精确度稍差,适合于稍长一点的计时;

              ElapsedTicks: 返回计时经过的计时器刻度(timer tick)数。计时器刻度是Stopwatch对象可能的最小量度单位。计时器刻度时间的长度由特定的计算机和操作系统确定。Stopwatch对象的 Frequency静态字段的值表示一秒所包含的计时器刻度数。注意它与TimeSpan的Ticks属性所用的时间单位的区别。

    应当根据计时任务的情况选择其中的一个属性。在我们的示例程序中,Elapsed属性提供了需要的精确度,用它来输出经过的微秒数。这也是TimeSpan的最高精确度了。

    使用IsRunning属性可以查看一个Stopwatch实例是否正在计时,使用StartNew方法可以开始一个新的计时器。

    Stopwatch类位于System.Diagnostics命名空间,是用来度量程序运行时间,对于自动化测试来说,利用Elapsed属性,就可以度量完成测试用例所应用的时间,并添加到log信息里面。

    Stopwatch提供了几个方法用以控制stopwatch对象。Start方法开始一个计时操作,stop方法停止计时。此时如果第二次使用start方法,将继续计时,最终计时的结果为两次计时的累加。为避免这种情况,在第二次计时时使用Reset方法将对象归零。使用IsRunning可以确定stopwatch的当前状态。

    结束计时后,读取stopwatch的结果,stopwatch类提供了以下属性:

    • Elapsed:返回一个TimeSpan对象,表示时间间隔;
    • ElapsedMillinseconds:返回计时经过的微妙数;
    • ElapsedTicks:返回计时经过的计时器刻度(timer tick)数。计时器刻度时stopwatch对象可能的最小量度单位。计时器刻度时间的长度由特定的计算机和操作系统确定。

    下面时Stopwatch和Nlog结合的一段示例:

         Log.SetConfig();

                Log.Info("Info");

                Log.Warn("Warn");

                Log.Error("Error");

                Log.ChangleConfig();

                Stopwatch during = new Stopwatch();

                during.Start();

                string starttime = DateTime.Now.ToString();

                //logger.Info("Starttime" + ": " + starttime);

                Log.Info("Info");

                Log.Warn("Warn");

                Log.Error("Error");

                for (int i = 0; i < 4; i++)

                {

                    Thread.Sleep(1000);

                    Log.Info("Info");

                    Log.Warn("Warn");

                    Log.Error("Error");

                }

                Log.Info("Starttime" + ": " + starttime);

                Log.Info("EndTime" + ": " + DateTime.Now);

                during.Stop();

                Log.Info("During" + ": " + during.Elapsed.ToString());

                Log.Info("Warn: " + Log._warn_count);

                Log.Info("Error: " + Log._error_count);

  • 相关阅读:
    电脑磁盘分区助手:DiskGenius磁盘管理与数据恢复软件
    python安装第三方的包
    教你成为全栈工程师(Full Stack Developer) 四十五-一文读懂hadoop、hbase、hive、spark分布式系统架构
    北半球 自己动手做聊天机器人
    [08] 请求、会话、上下文属性比较
    [07] ServletContext上下文对象
    [06] Session实现机制以及和Cookie的区别
    [05] Session概要
    [04] Cookie概念和基本使用
    [03] Servlet继承关系和生命周期
  • 原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3140176.html
Copyright © 2020-2023  润新知