C# 使用 Fody 监控方法执行时间

本文介绍了如何使用MethodTimer.Fody库进行代码性能追踪,通过编译时注入方式在不改变原有代码结构的情况下,为方法添加Stopwatch监控。需注意在项目中配置FodyWeavers.xml以确保功能生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

在做性能调优的时候,经常需要跟踪具体方法的执行时间;通过插入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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值