C#使用Fody实现监控方法执行时间
作者:rjcql
这篇文章主要为大家详细介绍了C#如何使用Fody实现监控方法执行时间,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解下
写在前面
在做性能调优的时候,经常需要跟踪具体方法的执行时间;通过插入Stopwatch的方案对代码的侵入性太高了,所以引入了 MethodTimer.Fody 类库,采用编译时注入的方式给方法动态加上Stopwatch 跟踪代码,只需要在目标方法上添加 [Time] 属性标签,即可实现注入。
需要到NuGet安装一下Fody 和 MethodTimer.Fody
PM> Install-Package Fody
PM> Install-Package MethodTimer.Fody
代码实现
// 方法执行时长记录器 public static class MethodTimeLogger { public static void Log(MethodBase methodBase, long milliseconds, string message) { Console.WriteLine($"方法:{methodBase.Name} 耗时:{milliseconds}秒, 信息:{message}"); } } // 测试目标类 public class MethodTracer { [Time("跟踪测试")] public void TestMethod() { Console.WriteLine("TestMethod: 开始执行"); Thread.Sleep(123); } }
调用示例:
var methodTracer = new MethodTracer(); methodTracer.TestMethod();
执行结果
注意事项
有个需要特别注意的事情,否则注入代码无法生效,在项目中添加 FodyWeavers.xml 文件并将属性设置为"始终复制"。
Xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?> <Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> <MethodTimer /> </Weavers>
直接黏贴以下内容,vs会自动生成xsd
<Weavers> <MethodTimer/> </Weavers>
到此这篇关于C#使用Fody实现监控方法执行时间的文章就介绍到这了,更多相关C#监控方法执行时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!