我有幾個處理器密集的代碼段。我在那裏有用於內部部署和測試的調試語句,但是當我部署到我的客戶站點時,我想做一個沒有這些的構建。我目前使用:c#優化了一些日誌語句
ifIsDebugEnabled()
包日誌消息,但是這也佔用處理器時間,當我評論全部註銷性能提升。有沒有一個標準的方法來解決這個問題,或者我可以做其他事情嗎?
感謝, 理查德
我有幾個處理器密集的代碼段。我在那裏有用於內部部署和測試的調試語句,但是當我部署到我的客戶站點時,我想做一個沒有這些的構建。我目前使用:c#優化了一些日誌語句
ifIsDebugEnabled()
包日誌消息,但是這也佔用處理器時間,當我評論全部註銷性能提升。有沒有一個標準的方法來解決這個問題,或者我可以做其他事情嗎?
感謝, 理查德
要優化方法調用,可以將ConditionalAttribute
放在方法上。就像這樣:
[Conditional("DEBUG")]
void SomeDebugMethod(string message) {
// ...
}
調用此方法如果代碼比DEBUG另一種配置編譯將被刪除。
這比使用像#ifdef DEBUG .. #endif
這樣的指令更方便,如果您可以負擔將方法中的調試邏輯。
#if DEBUG
#endif
在代碼中跳過了從發佈版本代碼
...
您可以使用條件編譯:
#if DEBUG
// code to log here
#endif
的代碼將只如果你正在運行調試模式被列入編譯。您還可以使用項目屬性頁面創建自己的條件編譯指令。
您可以使用preprocessor directives使編譯時進行調試模式檢查......因此,如果在沒有定義DEBUG的情況下進行編譯,它將完全跳過您的調試代碼,從而不會導致性能下降。
#define DEBUG
// ...
#if DEBUG
Console.WriteLine("Debug");
#endif
你不需要'#define DEBUG' - 它在DEBUG編譯時默認完成 –
應該是DEBUG而不是DBEUG –
@Kieren Johnstone謝謝! –