是否可以使用属性计算C#中方法的执行时间?

时间:2011-05-13 13:21:07

标签: c# performance attributes

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

6 个答案:

答案 0 :(得分:5)

您可以使用面向方面编程来执行此操作。从PostSharp看这个例子:http://www.sharpcrafters.com/solutions/performance

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

答案 1 :(得分:4)

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

或者您可以使用属性来分析性能的第三方库,请参阅此相关主题What Are Some Good .NET Profilers?

答案 2 :(得分:3)

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

如果您不想编写手动代码,请查看Visual Studio ProfilersSO - Best Profilers

答案 3 :(得分: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))
}

如果你想做更普遍的事情(即弄清楚程序的哪些部分很慢),那么就像使用其他一些答案一样使用分析器。

答案 4 :(得分:0)

简单如馅饼:

  1. 不要
  2. Use a profiler
  3. 对于生产测量,请使用Performance Counters

答案 5 :(得分:-2)

这样的事情:

  var oldTime = DateTime.Now;
  //your code here
  var resultTimeSpan = DateTime.Now - oldTime;