2011-05-13 35 views
4

是否有C#属性(用于方法)来计算此方法的执行时间?有另一种方法吗?是否可以使用属性计算C#中方法的执行时间?

+0

这个问题是没有意义的。属性只在某些东西正在查找时才起作用,这意味着您需要一些代码来检查属性,然后执行某些操作。另外'这个'是什么? – Tejs 2011-05-13 13:25:02

+1

仅当您使用基于属性的代码重写器(如postsharp)时。 – CodesInChaos 2011-05-13 13:28:38

+2

@Tejs这可能没有意义,因为OP可能会误解属性是什么以及如何使用它们。在这种情况下,你纠正他,帮助他,而不是给他一个downvote。而“这一个”显然是指该方法。 – Phil 2011-05-13 13:32:23

回答

2

如果您想编写一些测试代码来分析各种功能或其中的某些部分,您可以使用System.Diagnostics.Stopwatch来跟踪经过的时间。就像这样:

public void DoSomething(){ 
    Stopwatch stopWatch = new Stopwatch(); 
    stopWatch.Start(); 

    //stuff you want to time 

    stopWatch.Stop(); 

    System.Console.Writeln(String.Format("Total Ticks: {0}", stopWatch.ElapsedTicks)) 
} 

如果这是你想要做一个更普遍的事情(即制定出什么计划的部分是缓慢的),然后使用一个分析器像一些其他的答案提出的。

3

您可以使用Timer,在函数调用之前启动它,然后在方法完成后停止它。然后以优选形式输出时间!

OR

如果你不想写手工代码,请Visual Studio ProfilersSO - Best Profilers

+0

是的,最好的形式是修复你没有使用合适的分析器的事实:_)** [见FAQ条目号。 5](http://stackoverflow.com/questions/3927/what-are-some-good-net-profilers)** – sehe 2011-05-13 13:35:21

4

还有其他方法: 您可以使用VS Profiler来检查particuler方法执行的次数和时间。

,或者你可以它使用属性剖析性能第三方库,请参阅本相关主题What Are Some Good .NET Profilers?

5

您可以使用面向方面编程来做到这一点。看看来自PostSharp的这个例子:http://www.sharpcrafters.com/solutions/performance

这里的技巧是定义在编译时注入代码的行为。一个用例是为您需要的方法添加时间。

0

事情是这样的:

var oldTime = DateTime.Now; 
    //your code here 
    var resultTimeSpan = DateTime.Now - oldTime; 
相关问题