首页 > 教程 > MethodTimer:一个轻量级的.NET运行耗时统计库

MethodTimer:一个轻量级的.NET运行耗时统计库

时间:2024-11-06 | 来源: | 阅读:63

话题: T Net ETH 一个 TIM 开源

前言 在.NET开发中,为了准确统计对应方法的执行时间,我们最常用的方式是手动使用 Stopwatch 来显式编写计时逻辑,但是假如你需要大量的使用 Stopwatch 来进行耗时统计的话不利于保持代码的整洁和增加代码的维护成本。 项目介绍 MethodTimer是一个.NET开源、免费(MIT L

在.NET开发中,为了准确统计对应方法的执行时间,我们最常用的方式是手动使用 Stopwatch 来显式编写计时逻辑,但是假如你需要大量的使用 Stopwatch 来进行耗时统计的话不利于保持代码的整洁和增加代码的维护成本。

MethodTimer是一个.NET开源、免费(MIT License)、轻量级的运行耗时统计库,用于在编译时自动向指定方法注入计时代码,无需手动编写繁琐的计时逻辑。

创建名为: MethodTimerExercise 的控制台应用。

安装NuGet

命令安装

PM>?Install-Package?Fody
PM>?Install-Package?MethodTimer.Fody

搜索 Fody 安装:

搜索 MethodTimer.Fody 安装:

通过在方法上添加 Time 属性,MethodTimer 会在编译时自动向 TimeMethod 注入计时代码。

????????[Time]
????????public?static?void?TimeMethod()
????????{
????????????for?(int?i?=?0;?i?????????????{
????????????????Console.WriteLine($"输出结果{i}");
????????????}
????????}

使用ILSpy查看编译后的代码

?public?static?void?TimeMethod()
?{
??Stopwatch?stopwatch?=?Stopwatch.StartNew();
??try
??{
???for?(int?i?=?0;?i????{
????Console.WriteLine($"输出结果{i}");
???}
??}
??finally
??{
???stopwatch.Stop();
???string?message?=?null;
???MethodTimeLogger.Log(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode?not?supported:?LdMemberToken*/,?typeof(Program).TypeHandle),?stopwatch.Elapsed,?message);
??}
?}

耗时拦截器记录两种方法

运行耗时为long(毫秒):

????????///?
????????///?运行耗时为long(毫秒)
????????///?

????????public?static?class?MethodTimeLogger1
????????{
????????????public?static?void?Log(MethodBase?methodBase,?long?milliseconds,?string?message)
????????????{
????????????????Console.WriteLine($"方法:{methodBase.Name}?耗时:{milliseconds}?毫秒,信息:{message}");
????????????}
????????}

运行耗时为TimeSpan:

????????///?
????????///?运行耗时为TimeSpan
????????///?

????????public?static?class?MethodTimeLogger
????????{
????????????public?static?void?Log(MethodBase?methodBase,?TimeSpan?elapsed,?string?message)
????????????{
????????????????Console.WriteLine($"方法:{methodBase.Name}?耗时:{elapsed.TotalMilliseconds}?毫秒,信息:{message}");
????????????}
????????}

耗时统计时长输出

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看?,别忘了给项目一个Star支持?。

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没?)。


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网