性能检查C#方法调用

时间:2014-07-18 06:09:23

标签: c# reflection system.diagnostics

我想创建一个类,该类在层次结构中编写一个包含所有Method Calls的文件,并且需要Time from my Program。我不知道如何解决这个问题。我发现的只是StackTrace和StackFrame类,但这不是我真正需要的。我想开始我的程序并做一些动作。在后台,我的类编写了一个文件(例如XML),其结构如下:

Method1: 220ms
  Method2: 180ms
    Method3: 150ms
  Method4: 25ms
    Method5: 20ms
Method6: 110ms

有一种简单的方法吗?我想在System.Diagnostics和System.Reflection命名空间中搜索,但我不知道该怎么做。

到目前为止,我还没有写过一行代码,因为我需要一个很好的提示。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试Mini Profiler。我通常用它来追踪执行时间。

然后跟踪方法执行此操作(作为文档中的mentioend) -

using StackExchange.Profiling;
...
var profiler = MiniProfiler.Current; // it's ok if this is null
using (profiler.Step("Set page title"))
{
    ViewBag.Title = "Home Page";
}
using (profiler.Step("Doing complex stuff"))
{
    using (profiler.Step("Step A"))
    { // something more interesting here
        Thread.Sleep(100);
    }
    using (profiler.Step("Step B"))
    { // and here
        Thread.Sleep(250);
    }
}

它有一个很好的界面,可以显示网络每个步骤需要多长时间 -

enter image description here

对于基于Windows和控制台的应用程序,请使用此处提到的Windows扩展程序 -

http://nootn.github.io/MiniProfiler.Windows/

这里提到了这个过程 -

http://www.nootn.com.au/2012/07/performance-profiling-console-or-winwpf.html#.U8i-TDS1bcg