使用.net Stopwatch class 来分析你的代码

  当我们在调试,优化我们的代码的时候,想知道某段代码的真正的执行时间,或者我们怀疑某段代码,或是某几段代码执行比较慢,

需要得到具体的某段代码的具体执行时间的时候。有一个很好用的类Stopwatch。

Stopwatch 类在 System.Diagnostics命名空间下。可以用来做分析.net代码块的基本工具。

例如:

复制代码
System.Diagnostics.Stopwatch timerObj = new System.Diagnostics.Stopwatch();

timerObj.Start();

Decimal totalDec = 0;
int limit = 1000000;
for (int i = 0; i < limit; ++i) 
{
totalDec = totalDec + (Decimal)Math.Sqrt(i);
}
timerObj.Stop();
Console.WriteLine(“Sum of square roots: {0}”,totalDec);
Console.WriteLine(“Milliseconds elapsed : {0}”,timerObj.ElapsedMilliseconds);
Console.WriteLine(“Time elapsed : {0}”, timerObj.Elapsed);
复制代码

 

输出结果:
Sum of square roots : 666666166.45882210823608
Milliseconds elapsed: 282
Time elapsed : 00:00:00.2828692

当你用Stopwatch 来调试你的时候,你可以使用 IDisposable 接口来自动关掉Stopwatch
1.定义一个自定义的Stopwatch类,继承System.Diagnostics.Stopwatch 和 IDisposable

复制代码
class AutoStopwatchDemo : System.Diagnostics.Stopwatch, IDisposable
{
public AutoStopwatchDemo()
{
Start();
}
public void Dispose()
{
Stop();
Console.WriteLine(“Elapsed : {0}”, this.Elapsed);
}
}
复制代码

 

2. 在你要调试的代码块里面使用

复制代码
using (new AutoStopwatchDemo())
{
Decimal totalObj2 = 0;
int limitObj2 = 1000000;
for (int i = 0; i < limit2; ++i)
{
totalObj2 = limitObj2 + (Decimal)Math.Sqrt(i);
}
}
复制代码

 

此外,Stopwatch除了有Start()和Stop()方法,还有 Reset() 方法,

 

 

 

 

posted @   章为忠  阅读(603)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示