.NET修仙传
.NET WebAPI中FromRoute、FromQuery、FromBody的关键角色与用法
C# 新用法
C#基础语法与数据类型
序列化
C# 7.0
模式匹配Pattern Matching
优秀实用的类库推荐
2024年C#优秀实用的类库推荐
依赖注入与中间件
依赖注入
查询所有已注入的服务
WebApi实现批量注入
原生依赖注入
自动依赖注入框架
优秀中间件
依赖注入
Autofac
生命周期
文档操作
PDF操作
PDF合并及生成书签目录
Excel操作
几个Excel文件合并去重分类
Excel文件之COM组件方式
操作Excel文件之NPOI
INI文件
面试宝典
WebService、WCF、WebAPI、一般处理程序
C# 线程和进程的区别
asp.net core 服务生命周期
asp.net core 的中间件都有哪些
操作系统编程
获取搜狗输入法中英文
com组件集成
执行系统命令
通过句柄嵌入exe窗体程序
windows-开机自启动
程序调用cmd命令生成WCF服务的客户端调用文件
获取电脑信息
键盘记录器
键盘改键功能
监听鼠标操作
性能监控
Stopwatch轻松测量执行时间
MethodTimer.Fody 监控方法执行耗时
框架揭秘
01编程初体验
中间件 Middleware
路由
配置管理
配置系统
配置管理
日志管理
Log4Net
NLog
.net core原始日志记录
日志管理
Serilog
ORM
EF Core初始化
EF Core的实体类配置
执行原生SQL语句
EF Core
操作sqlite
操作Mysql数据库
操作LiteDB
AutoMapper高效实现对象映射
AutoMapper
AutoMapper 10个常用方法总结
缓存
Redis支持哪几种数据类型?
什么是Redis?简述它的优缺点?
Redis相比memcached有哪些优势?
认证
什么是 JWT?它是如何工作的?
.net framework jwt
.net core Jwt操作
认证管理
.Net WebApi校验Token/参数的几种方式
鉴权授权
Authorization的几种方式
基础语法
集合
1、C#中常用集合类型
yield return 简化迭代并提高代码质量
AOP
.net core AOP
操作筛选器
网络编程
TCP 连接的前世今生
HttpRequest,WebRequest,HttpWebRequest,WebClient,HttpClient 之间的区别
网络编程
WebApi获取客户信息
通信
HTTP通信
公共类-HttpHelper
多线程编程
十种线程方式分析
Task-筑基期
parallel-筑基
消息队列
构建高性能 API 的高级技术
优秀教程网站
每日学习地址
全套教程汇总
理解ASP.NET Core
定时任务
定时器的三种使用方式
定时任务之windows任务计划程序
创建任务到Windows任务计划程序
定时任务之Quartz.Net
IHostedService启动时运行定时任务
学习网站
JSON序列化反序列化工具
前辈
发布部署
应用部署
GRPC
使用GRPC多个proto文件
.net 学习路线图
JSON操作
格式化JSON字符串
System.Text.Json
序列时对DataContract的支持情况
本文档使用 MrDoc 发布
-
+
首页
MethodTimer.Fody 监控方法执行耗时
MethodTimer.Fody 是一个功能强大的库,可以用于测量 .NET 应用程序中的方法的执行时间。允许你在不修改代码的情况下,自动地测量和记录方法的执行时间。 这个工具是基于.NET的 weaving 技术,通过修改IL(Intermediate Language,中间语言)代码来插入计时逻辑,从而在方法调用前后记录时间戳,进而计算出方法的执行时间。 它使用 Fody 插件框架可以无缝集成到项目中,所以向代码中添加性能测量功能变得非常容易。 # 1、安装NuGet包 >PM> Install-Package Fody PM> Install-Package MethodTimer.Fody # 2、使用 Time 特性 ```java using MethodTimer; namespace DemoConsole { internal class Program { /// <summary> /// 程序入口 /// </summary> /// <param name="args"></param> static void Main(string[] args) { // 调用示例方法 new Program().DoSomething(); Console.WriteLine("测试方法执行结束!!!"); Console.ReadKey(); } /// <summary> /// 示例方法 /// </summary> [Time] public void DoSomething() { Console.WriteLine("测试方法执行时间!!!"); } } } ``` # 3、执行效果 启动运行程序,可以在输出窗口查看方法的执行耗时 # 4、其他说明 Time 特性不仅可以加在方法上还可以直接添加到 Class 上,具体如下代码所示: ```java using MethodTimer; namespace ConsoleApp3 { [Time] internal class Program { /// <summary> /// 程序入口 /// </summary> /// <param name="args"></param> static void Main(string[] args) { // 调用示例方法 new Program().DoSomething(); new Program().ToDoSomething(); Console.WriteLine("方法执行结束!!!"); Console.ReadKey(); } /// <summary> /// 示例方法1 /// </summary> public void DoSomething() { Console.WriteLine("001——测试执行时间方法!!!"); } /// <summary> /// 示例方法2 /// </summary> public void ToDoSomething() { Console.WriteLine("002——测试执行时间方法!!!"); } } } ``` 运行程序后,可以输出类中每个方法的执行时间。 实际上,在代码中添加了 Time 特性以后,Fody 会自动生成下面的代码 ```java public class MyClass { [Time] public void DoSomething() { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 原始方法体 System.Threading.Thread.Sleep(1000); // 模拟工作 stopwatch.Stop(); // 输出或记录执行时间 Console.WriteLine($"执行时间:{stopwatch.Elapsed.TotalMilliseconds} ms"); } } ``` # 5、拦截记录 如果想手动处理日志记录,可以定义一个静态类来拦截日志记录,方法的示例,具体如下代码所示 ```java public static class MethodTimeLogger { public static void Log(MethodBase methodBase, TimeSpan elapsed, string message) { //Do some logging here } } ``` 生成后的代码 ```java public class MyClass { public void MyMethod() { var stopwatch = Stopwatch.StartNew(); try { Console.WriteLine("Hello"); } finally { stopwatch.Stop(); MethodTimeLogger.Log(methodof(MyClass.MyMethod), stopwatch.Elapsed); } } } ``` MethodTimer.Fody是一个非常有用的工具,尤其在性能调优阶段,可以帮助你快速识别出哪些方法是性能瓶颈,从而针对性地进行优化。 **主要特点** - 1、非侵入式 MethodTimer.Fody不需要在源代码中添加额外的计时代码,只需要在项目中添加相应的NuGet包,并在项目属性中做一些配置,就可以自动地为方法添加计时功能。 - 2、灵活的配置 你可以选择性地对某些方法进行计时,或者排除不想被计时的方法。这通常通过方法的特性或者类的命名空间来进行配置。 - 3、输出结果多样化 MethodTimer.Fody可以将计时结果输出到不同的地方,如控制台、日志文件或者通过事件追踪(ETW)等方式,这取决于你的配置。 - 4、性能影响小 尽管MethodTimer.Fody在方法中插入了计时逻辑,但它被设计得尽可能地对性能影响最小,通过精心优化的IL代码插入策略来实现这一点。 **总结** MethodTimer.Fody 是一个强大的工具,提供了简便的方式来监控 C# 方法的执行时间,特别适用于需要快速诊断性能问题的场合。 通过其灵活的配置和非侵入性的特性,它可以无缝地融入现有的开发流程中,帮助我们团队提高应用的性能和响应速度。 这个工具特别适合在开发和测试阶段快速识别性能瓶颈,而无需在代码中显式地添加计时代码,可以保持源代码的整齐性和可维护性。 **开源地址** https://github.com/Fody/MethodTimer
孙端己
2024年7月23日 15:35
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码