微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 测量方法执行时间的最佳方法

我正在尝试找到一种最好的方法来测量在Application Insights上记录它们的方法的持续时间,我知道如果我们做这样的事情是可能的:
public void TestMethod()
{    
    var sw = Stopwatch.StartNew();

    //code here

    sw.Stop();
    Console.WriteLine("Time elapsed: {0}",sw.Elapsed);
}

但是,正如您所想的那样,我不想在所有方法上编写它,理想情况下,我想使用装饰器,类似于此.

[MeasureTime]
public void TestMethod()
{
    //code here
}

或类似的东西.所以我的问题是:我怎样才能建立这样的东西?有没有更好的方法呢?

提前致谢!

解决方法

一种方法是使用像’Fody’这样的组装编织器,其扩展名可以完全满足您的要求.请参阅此链接获取示例扩展名: https://github.com/Fody/MethodTimer

Fody的工作原理是它在编译时将代码注入代码库,利用你在答案中建议的属性.提供的扩展名正如您所描述的那样使用秒表记录代码的执行时间.

编辑:用法示例:

安装库后,可以将注释[Time]添加到要测量的方法中:

[Time]
public void TestMethod()
{
    //code here
}

然后,您可以创建自定义拦截器(将由Fody扩展自动选取的静态类),您可以使用该拦截器将度量标准跟踪添加到应用程序洞察中:

public static class MethodTimeLogger
{
    public static void Log(MethodBase methodBase,long milliseconds)
    {
        var sample = new MetricTelemetry();
        sample.Name = methodBase.Name;
        sample.Value = milliseconds;
        // Your telemetryClient here
        telemetryClient.TrackMetric(sample);
    }
}

原文地址:https://www.jb51.cc/csharp/239001.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐