Блок приложения для ведения журнала - стоимость Logger.Write () - PullRequest
0 голосов
/ 12 августа 2010

HI All,

Насколько дорогим может быть Logger.Write (logEnrty) по отношению к циклам ЦП, когда мы рассматриваем производительность приложения.

1 Ответ

0 голосов
/ 12 августа 2010

Я собираюсь предположить, что .NET / Visual Studio здесь (с именем «Корпоративная библиотека»)

Производительность приложения выше, чем циклы ЦП.Я не знаком с регистратором Enterprise Library, но я ожидаю, что самый большой удар в журналировании связан не с циклами процессора, а с дисковым вводом-выводом.Если ваше приложение сильно загружено с диска, логирование повлияет на него больше, чем если бы оно не было.

Моя рекомендация: если вы хотите / нуждаетесь в регистрации, добавьте ее таким образом, чтобы она легко отключалась с глобальной точки зрения.Вместо того, чтобы вызывать библиотеку журналов напрямую, оберните ее в свой собственный класс, чтобы вы могли легко отключить ее, обернув ее чем-то вроде директивы предварительной обработки DEBUG.И, чтобы не задерживать основной поток выполнения, ведите запись в другом потоке (не уверен, если Enterprise Library делает это по умолчанию)

class MyLogger
{
    public static void Log(string msg)
    {
        #if DEBUG 
           // Logging code here
        #endif
    }
}

То, что приведенная выше директива предварительной обработки, это толькосоздайте упакованный код, когда установлен режим Visual Studio DEBUG.Это не относится к режиму RELEASE.

И, если вам действительно ДЕЙСТВИТЕЛЬНО нужно знать, возьмите инструмент профилирования и получите реальные данные о том, во что обходится регистрация.

...