我希望能够计算执行许多函数所需的时间。我在考虑使用某种类型的秒表课程。我可以在每个函数调用之前和之后调用start / stop,但这对我来说似乎非常难看。没有秒表课,有没有办法做到这一点? Reflections类中的某些东西可以帮助解决这个问题吗?
提前感谢您输入。
答案 0 :(得分: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);
}
}
您可以通过任何方法获得时间
答案 1 :(得分:2)
我推荐性能标记的赞助商... Red Gate Ants。您可以获得一个运行应用程序的演示,并为您的应用在分析时点击的每一行和每种方法提供性能信息。
答案 2 :(得分:1)
我认为您应该考虑使用代码分析...使用Ants Profiler等外部应用程序来分析您的代码?蚂蚁来自红门并不是免费的,但我认为还有一些免费/开源应用程序。
一些free/open source profilers here ...
可以在这里和那里秒表一个方法,但尝试为你的解决方案中的每个方法做到这一点很快就会变得笨拙。
答案 3 :(得分:1)
您可以将秒表类放入用于装饰方法的属性中,即AOP样式。看看this
答案 4 :(得分:0)
有各种计时器。 System.Timers.Timer
就是这样的。但正如之前的回答所暗示的那样,你确定这是你正在试图解决的问题的正确解决方案吗?