2011-07-04 42 views
3

我想着输入统计信息和某种登录到我的程序的最佳方式。 1.有没有人有关于统计在程序中实现的好文章?
2.我可以创建属性之前的一些方法上的计时器来衡量所花费的运行时间打电话呢?例如自动日志记录和统计(C#应用程序)

class A 
{ 
    [RunTimer] 
    public void Foo() 
    { 
    // do stuff 
    } 
} 

编辑
很好,我们希望有机会有可能在运行时控制统计数据,而不仅仅是ob dev或QA时间。

+2

为什么不使用探查? –

+0

我的代码审查问题,这可能会有所帮助。您可以使用'IDispose'接口制作一个整洁的解决方案:http://stackoverflow.com/questions/6410569/speeding-up-performance-monitoring-code –

+1

profiler,你能指导我吗? – guyl

回答

4

Performance Counters是你的朋友。 .NET Instrumentation Workshop是一篇很棒的文章,可以让您一步步地了解整个过程。

一旦你有了你的算盘,你可以用它们来统计各种统计数据。

此外,计数器可以在运行时有两种方式控制:

您的应用程序
  • 变化是否通过一个配置文件切换更新Perf Counters的
  • 更改什么更新您通过跟踪PerfMon

这样,你就不会被绑定到dev代码,但你也可以在生产代码中使用它们。当然,你可能不希望它们全部持续运行,这是允许配置文件切换可以派上用场的地方。

5

一种选择是做出会时的目标功能的高阶函数和记录结果:

public static class TimingExtensions 
{ 
    public static Func<R> Time<R>(this Func<R> target, Action<string> logger) 
    { 
     return delegate 
     { 
      System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch(); 

      s.Start(); 

      R value = target(); 

      s.Stop(); 

      logger("Function '" + target.Method.Name + "' elapsed ms: " + s.ElapsedMilliseconds); 

      return value; 
     }; 
    } 
} 

但是,如果你需要做一些重要的性能测试,那么也有框架。

相关问题