5

我希望能够计算出许多函数执行所需的时间。我正在考虑使用某种类型的秒表类。我可以在每个函数调用之前和之后调用 start/stop,但这对我来说似乎非常难看。有没有办法在没有秒表课程的情况下做到这一点?Reflections 课程中的某些内容可以对此有所帮助吗?

提前感谢您的输入。

4

5 回答 5

3

我认为你必须尝试 PostSharp 方式http://www.postsharp.org/

为此更改示例中的代码:

public class ProfileMethodsAttribute : OnMethodBoundaryAspect 
{ 
  public override void OnEntry( MethodExecutionEventArgs eventArgs) 
  { eventArgs.MethodExecutionTag = Stopwatch.StartNew();  } 

  public override void OnExit( MethodExecutionEventArgs eventArgs) 
  { 
     // Here u can get the time
     Console.WriteLine(((Stopwatch)eventArgs.MethodExecutionTag).ElapsedMilliseconds);
  } 
}

您可以通过任何方法获得时间

于 2010-01-06T16:16:24.297 回答
2

我推荐性能标签的赞助商...红门蚂蚁。您可以获得一个演示,它将运行您的应用程序,并为您的应用程序在分析时遇到的每一行和每一种方法提供性能信息。

于 2010-01-06T15:08:15.403 回答
1

您可以将秒表类放入用于装饰您的方法的属性中,即 AOP 样式。看看这个

于 2010-01-06T15:43:15.850 回答
1

我认为您应该考虑使用代码分析...使用像Ants Profiler这样的外部应用程序来分析您的代码?Ants 来自 Red Gate,不是免费的,但我认为那里也有一些免费/开源的应用程序。

这里有一些免费/开源的分析器......

在这里和那里对方法进行秒表是可以的,但是尝试对解决方案中的每种方法都这样做很快就会变得笨拙。

于 2010-01-06T15:08:42.483 回答
0

有各种计时器。System.Timers.Timer就是这样一个。但正如前面的答案所暗示的那样,您确定这是您实际尝试解决的问题的正确解决方案吗?

于 2010-01-06T15:08:24.903 回答