Log4cplus действительно так медленно? - PullRequest
8 голосов
/ 07 сентября 2011

Я тестировал три варианта для моей подсистемы журналирования в C ++. Один из них - Log4cplus, другой - Pantheios, а последний - простая библиотека журналирования, которую мы написали сами.

Log4cplus был намного медленнее, чем два других. Вот результаты для регистрации 1 000 000 записей журнала:

  • log4cplus: 200 сек. EDIT: установка размера буфера уменьшила его до 120 сек.
  • Mylogger: 55 секунд
  • Пантеиос: 35 секунд

Интересно, мне не хватает какой-либо настройки производительности.

Я должен добавить, что я всегда использую root logger, я регистрируюсь в файл и регистрируюсь: LOG4CPLUS_INFO(rootLogger, "Replace me with the text!");

спасибо, Реза

1 Ответ

12 голосов
/ 07 сентября 2011

Использование log4cplus::NullAppender в performance_test дает мне Logging 1000000 took: 4sec 343709usec на частично загруженном сервере FreeBSD.IOW, чистые накладные расходы на регистрацию довольно малы.Похоже, ваши сроки регистрации зависят от целевого регистратора.Если вы используете log4cplus::FileAppender, время будет значительно отличаться.

РЕДАКТИРОВАТЬ:

Вам нужно немного настроить FileAppender.Убедитесь, что вы установили для свойства ImmediateFlush значение false.Вы также можете настроить BufferSize на что-то большее, например, 1000000 байт.

...