首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[C#] 利用MethodTimer.Fody 统计代码执行时间

[C#] 利用MethodTimer.Fody 统计代码执行时间

作者头像
科控物联
发布2023-10-06 20:34:12
发布2023-10-06 20:34:12
6380
举报
文章被收录于专栏:科控自动化科控自动化

网关应用之 多协议转Modbus

去年做的多协议转Modbus项目[C#] 地热数据采集项目1 现场设备数据采集,并转存到ModbusTCP服务器,今年客户又要上二期。需要确认性能。他们需要数据,那就用MethodTimer.Fody做个简单的测试就OK了。

需要了解代码的执行效率,可以借助MethodTimer.Fody这个开源库。

主页:https://github.com/Fody/MethodTimer

1、安装Nuget包:

代码语言:javascript
复制
Install-Package MethodTimer.Fody

2、Add to FodyWeavers.xml

代码语言:javascript
复制
<Weavers>
  <MethodTimer/>
</Weavers>

3、代码部分,在需要统计的方法上头加上[Time]:

代码语言:javascript
复制
public class MyClass
{
    [Time]
    public void MyMethod()
    {
        //Some code u are curious how long it takes
        Console.WriteLine("Hello");
    }
}

在没有拦截器的情况下编译的内容

代码语言:javascript
复制
public class MyClass
{
    public void MyMethod()
    {
        var stopwatch = Stopwatch.StartNew();
        try
        {
            //Some code u are curious how long it takes
            Console.WriteLine("Hello");
        }
        finally
        {
            stopwatch.Stop();
            Trace.WriteLine("MyClass.MyMethod " + stopwatch.ElapsedMilliseconds + "ms");
        }
    }
}

4、在VS的输出窗口查看调试信息。

如果希望进行日志输出的操作,定义下面的静态类:

代码语言:javascript
复制
public static class MethodTimeLogger
{
    private static NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();

    public static void Log(MethodBase methodBase, TimeSpan elapsed, string message)
    {
        _logger.Debug($"{methodBase.Name}, {elapsed}, {message}");
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-05 07:40,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在没有拦截器的情况下编译的内容
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档