【问题标题】:An efficient way to record time taken to execute a method in C#一种记录在 C# 中执行方法所用时间的有效方法
【发布时间】:2011-11-30 09:22:08
【问题描述】:

我正在寻找一种简单、可重用的方法来记录在我的 .NET (MVC) 项目中执行一个方法所花费的时间,并使用NLog 记录它,并想知道是否有人对如何实现它有任何建议?

为了保持干净的代码和可读性,如果可能的话,我真的不想将它集成到我的代码中。

如果有人有任何建议,我很乐意听取他们的意见。

【问题讨论】:

  • 不一定用于日志记录...但 EQATEC Profiler 更适合进行分析。我确信存在其他类似的工具。它通过重写用于计时信息的方法进入/退出的程序集来工作。不是最不打扰...

标签: c# asp.net asp.net-mvc-3 c#-4.0


【解决方案1】:

使用Stopwatch

Stopwatch time = Stopwatch.StartNew();
time.Stop();
var milliseconds= time.ElapsedMilliseconds;

【讨论】:

  • 谢谢。这就是我目前所做的。我正在寻找一种方法来实现这一点,而无需在方法中编写任何代码。
【解决方案2】:

由于您提到您希望避免更改现有代码,因此 AOP(面向方面​​的编程)会派上用场

这是一篇使用 PostSharp 准确描述此场景的博文: http://theburningmonk.com/2010/03/aop-method-execution-time-watcher-with-postsharp/

【讨论】:

  • 在我们的例子中,我们还将这些时间跨度指标发布到 Amazon CloudWatch,以便我们对正在发生的事情有一个伪实时视图,并且也可以围绕这些指标设置警报,以便我们在出现以下情况时收到通知比如说,延迟问题正在发生并且反应迅速(theburningmonk.com/2012/03/…
【解决方案3】:

你可能想看看这个:

http://code.google.com/p/mvc-mini-profiler/

由堆栈交换的好人撰写。

【讨论】:

  • 作为警告:要为方法计时,您需要添加一点代码。它可以通过 AOP 完成,但我们认为:性能是一个特性;可以写代码来支持特性
猜你喜欢
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
相关资源
最近更新 更多