2011-07-04 42 views
1

我有幾個處理器密集的代碼段。我在那裏有用於內部部署和測試的調試語句,但是當我部署到我的客戶站點時,我想做一個沒有這些的構建。我目前使用:c#優化了一些日誌語句

ifIsDebugEnabled() 

包日誌消息,但是這也佔用處理器時間,當我評論全部註銷性能提升。有沒有一個標準的方法來解決這個問題,或者我可以做其他事情嗎?

感謝, 理查德

回答

2

要優化方法調用,可以將ConditionalAttribute放在方法上。就像這樣:

[Conditional("DEBUG")] 
void SomeDebugMethod(string message) { 
    // ... 
} 

調用此方法如果代碼比DEBUG另一種配置編譯將被刪除。

這比使用像#ifdef DEBUG .. #endif這樣的指令更方便,如果您可以負擔將方法中的調試邏輯。

1
#if DEBUG 
#endif 
在代碼中跳過了從發佈版本代碼

...

+0

應該是DEBUG而不是DBEUG –

+0

@Kieren Johnstone謝謝! –

1

您可以用預處理指令類似這樣的包裝你的代碼:

#if DEBUG 
// debug code 
#endif 

有可用指令的完整列表here

1

您可以使用條件編譯:

#if DEBUG 
// code to log here 
#endif 

的代碼將只如果你正在運行調試模式被列入編譯。您還可以使用項目屬性頁面創建自己的條件編譯指令。

1

您可以使用preprocessor directives使編譯時進行調試模式檢查......因此,如果在沒有定義DEBUG的情況下進行編譯,它將完全跳過您的調試代碼,從而不會導致性能下降。

#define DEBUG 
// ... 
#if DEBUG 
    Console.WriteLine("Debug"); 
#endif 
+1

你不需要'#define DEBUG' - 它在DEBUG編譯時默認完成 –