使用.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() 方法,
作者:章为忠
如有问题,可以微信:18618243664 联系我,非常感谢。
关注我的微信公众号,获取相关的 源代码及视频资料。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?