c# – 测量方法执行时间的最佳方法
发布时间:2020-12-15 08:13:26 所属栏目:百科 来源:网络整理
导读:我正在尝试找到一种最好的方法来测量在Application Insights上记录它们的方法的持续时间,我知道如果我们做这样的事情是可能的: public void TestMethod(){ var sw = Stopwatch.StartNew(); //code here sw.Stop(); Console.WriteLine("Time elapsed: {0}",s
我正在尝试找到一种最好的方法来测量在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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |