C # оптимизация некоторых операторов журнала - PullRequest
1 голос
/ 04 июля 2011

У меня есть пара разделов кода, которые сильно нагружают процессор. У меня есть отладочные операторы для внутренних развертываний и тестирования, но при развертывании на сайтах моих клиентов я хотел бы сделать сборку, в которой их нет. Я сейчас использую:

 ifIsDebugEnabled() 

, чтобы обернуть сообщения журнала, но это также отнимает процессорное время, и когда я прокомментировал весь выход из системы, производительность улучшилась. Есть ли стандартный способ сделать это или есть другие вещи, которые я могу сделать вместо этого?

Спасибо, Ричард

Ответы [ 5 ]

2 голосов
/ 04 июля 2011

Чтобы оптимизировать вызовы методов, вы можете поставить ConditionalAttribute на методы. Как это:

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

Вызовы этого метода будут удалены, если код скомпилирован в конфигурации, отличной от DEBUG.

Это более понятный способ, чем использование таких директив, как #ifdef DEBUG .. #endif, если вы можете позволить себе использовать логику отладки в методах.

1 голос
/ 04 июля 2011

Вы можете использовать директивы препроцессора , чтобы проверка режима отладки происходила во время компиляции ... поэтому, когда вы компилируете без определения DEBUG, он полностью пропустит ваш код отладки, не нанося ущерба производительности.1003 *

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug");
#endif
1 голос
/ 04 июля 2011

Вы можете обернуть свой код директивами препроцессора следующим образом:

#if DEBUG
// debug code
#endif

Полный список доступных директив здесь

1 голос
/ 04 июля 2011

Вы можете использовать условную компиляцию:

#if DEBUG
// code to log here
#endif

Код будет включен в компиляцию только в режиме DEBUG. Вы также можете создавать свои собственные директивы условной компиляции, используя страницу свойств проекта.

1 голос
/ 04 июля 2011
#if DEBUG
#endif

в вашем коде, чтобы пропустить код из сборки выпуска ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...