C#-Stopwatch

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

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

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

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

·         ElapsedMillinseconds:返回计时经过的微妙数;

·         ElapsedTicks:返回计时经过的计时器刻度(timer tick)数。计时器刻度时stopwatch对象可能的最小量度单位。计时器刻度时间的长度由特定的计算机和操作系统确定。

下面时StopwatchNlog结合的一段示例:

     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);

 

 

### C# 中 `Stopwatch` 类的使用方法 #### 创建并启动 `Stopwatch` 为了创建一个新的 `Stopwatch` 实例并且立刻开始计时,可以调用静态方法 `StartNew()`: ```csharp using System.Diagnostics; // 创建并立即启动一个Stopwatch实例 Stopwatch stopwatch = Stopwatch.StartNew(); ``` #### 记录待测代码执行时间 在记录特定代码片段的执行时间之前,先确保已经开始了计时。接着放置想要测量其耗时的操作。 ```csharp DoSomeHeavyComputation(); // 这里替换为实际要测试性能的函数或逻辑 ``` #### 停止计时与读取结果 完成目标操作之后停止计时器,并通过属性访问已过去的时间间隔。这里展示了如何打印总毫秒数作为输出[^1]。 ```csharp stopwatch.Stop(); Console.WriteLine($"Execution time: {stopwatch.Elapsed.TotalMilliseconds} ms"); ``` 另外一种方式是在不自动启动的情况下初始化 `Stopwatch` 对象,随后显式地控制它的生命周期——即何时开始(`Start`)和暂停/终止(`Stop`)它的工作状态[^2]。 ```csharp class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); // 显式的开始计时 stopwatch.Start(); // 模拟一些操作 System.Threading.Thread.Sleep(1000); // 显式的停止计时 stopwatch.Stop(); // 输出经过的时间 Console.WriteLine("经过时间: " + stopwatch.Elapsed); } } ``` 对于更复杂的场景下可能还需要考虑多阶段定时的需求,在这种情况下可以通过多次调用 `Restart()` 方法来重置并重新开始计时;也可以利用多个不同的 `Stopwatch` 实例分别追踪各个子过程所花费的具体时间长度[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值