2011-07-04 75 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; 
     }; 
    } 
} 

但是,如果你需要做一些重要的性能測試,那麼也有框架。

相關問題