# BenchmarkWatch.NET **Repository Path**: hrsink/BenchmarkWatch.NET ## Basic Information - **Project Name**: BenchmarkWatch.NET - **Description**: BenchmarkWatch.NET 是为 DOTNET 平台快速定位代码运行耗时所设计, 优化代码执行效率, 快速分析代码质量的分析工具. 支持版本: net45 netstandard2.0 netstandard2.1 net6.0 net7.0 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-02-18 - **Last Updated**: 2023-02-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BenchmarkWatch.NET 介绍 BenchmarkWatch.NET 是为 DOTNET 平台快速定位代码运行耗时所设计, 优化代码执行效率, 快速分析代码质量的分析工具. > 支持版本: > * net45 > * netstandard2.0 > * netstandard2.1 > * net6.0 > * net7.0 ## 快速使用 1. 创建 `BenchmarkWatch` 对象 ``` var watch = new BenchmarkWatch(); ``` 2. 使用 `BenchmarkWatch.Mark()` 方法添加检查标记点. ``` var watch = new BenchmarkWatch(); watch.Mark(); ``` 3. 使用 `BenchmarkWatch.Print()` 获取记录字符串信息 ``` var watch = new BenchmarkWatch(); watch.Mark(); var msgs = watch.Print(); ``` ### 使用示例2 ``` using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; namespace BenchmarkWatch.Test { public class Program { public static NET.BenchmarkWatch BenchmarkWatch = new NET.BenchmarkWatch(); public static void Main(params string[] args) { BenchmarkWatch.Mark(); var msgs = GetNext(); BenchmarkWatch.Mark(); var msgsor = msgs.GetEnumerator(); BenchmarkWatch.Mark(); while (msgsor.MoveNext()) { BenchmarkWatch.Mark(); Console.WriteLine(msgsor.Current); BenchmarkWatch.Mark(); } BenchmarkWatch.Mark(); var msges = BenchmarkWatch.Print(); foreach (var msg in msges) { Console.WriteLine(msg); } } public static IEnumerable GetNext() { for (int i = 0; i < 100; i++) { Thread.Sleep(100); yield return string.Format("run {0}", i); } } } } ``` ### 使用示例2 ``` using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using BenchmarkWatch.NET; namespace BenchmarkWatch.Test { public class Program { public static void Main(params string[] args) { var test = new Test(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); test.Method1(); test.Method2(); test.Method3(); var lines = test.Put(); foreach (var ln in lines) { Console.WriteLine(ln); } } } public class Test { private NET.BenchmarkWatch _watch = new NET.BenchmarkWatch(); public void Method1() { Thread.Sleep(520); _watch.Mark(); } public void Method2() { Thread.Sleep(620); _watch.Mark(); } public void Method3() { Thread.Sleep(310); _watch.Mark(); } public IEnumerable Put() { return _watch.Print(); } } } ``` 输出 ``` _watch(at /root/works/BenchmarkWatch.NET/test/Program.cs:65) -> Method1(at /root/works/BenchmarkWatch.NET/test/Program.cs:70) during took a total of 525ms, and executed is 1 times, the avg a times is 525ms Method1(at /root/works/BenchmarkWatch.NET/test/Program.cs:70) -> Method2(at /root/works/BenchmarkWatch.NET/test/Program.cs:77) during took a total of 7443ms, and executed is 12 times, the avg a times is 620ms Method2(at /root/works/BenchmarkWatch.NET/test/Program.cs:77) -> Method3(at /root/works/BenchmarkWatch.NET/test/Program.cs:83) during took a total of 3720ms, and executed is 12 times, the avg a times is 310ms Method3(at /root/works/BenchmarkWatch.NET/test/Program.cs:83) -> Method1(at /root/works/BenchmarkWatch.NET/test/Program.cs:70) during took a total of 5720ms, and executed is 11 times, the avg a times is 520ms ```