Как стать автором
Обновить

Комментарии 5

НЛО прилетело и опубликовало эту надпись здесь
Странный подход к наполнению статьи.
Сначала таблица, понять которую можно только прочтя последующий текст.
Есть сравнение двух библиотек, но итог сравнения не вынесен в таблички.
А самое интересное — особенности подкапотной реализации, приводящей к разнице в скорости, сокрыты где-то в недрах.

Отдельно отмечу про логгирование с кучей параметров — там изрядное время отъедает сборка строки, но не надо её оптимизировать несколькими вызовами логгера, скорее надо самому ускорять сборку строки.

Ещё не рассмотрен такой акспект, как скорость отработки layout-а записей — там указывается формат строчки в файловом логе и можно напихать много чего. Этой фичей многие пользуются, но знают ли её цену?

И ещё, у вас заголовок не соответствует контенту. По заголовку подразумевается, что будет описание того, как ускорить запись в лог, а не сравнение некоторого подмножества функций двух библиотек.
Отдельно отмечу про логгирование с кучей параметров — там изрядное время отъедает сборка строки, но не надо её оптимизировать несколькими вызовами логгера, скорее надо самому ускорять сборку строки.
Ещё не рассмотрен такой акспект, как скорость отработки layout-а записей — там указывается формат строчки в файловом логе и можно напихать много чего. Этой фичей многие пользуются, но знают ли её цену?

Я не смогу цифрами обосновать, а угадывать побаиваюсь. Я постараюсь сделать отдельную статью чуть позже (ну то есть сравнить разные способы заливки больших и малых строк в логгер). Мне только достоверно известно лишь то, что особые нюансы есть с log4j2 (см. тут: https://logging.apache.org/log4j/2.x/manual/async.html)


Есть сравнение двух библиотек, но итог сравнения не вынесен в таблички.

Да, так как я сравнивал не только две библиотеки, а еще и разные схемы работы с ними. Суть этой статьи — как факто того, какой подход быстрее при определенных параметрах.


И ещё, у вас заголовок не соответствует контенту. По заголовку подразумевается, что будет описание того, как ускорить запись в лог, а не сравнение некоторого подмножества функций двух библиотек.

Нельзя понять то, как ускорить лог, без анализа бенчмарков. Нельзя понять правильность выбора библиотеки без их сравнения. И невероятно сложно сравнить полное множество всех функций из всех библиотек.


А самое интересное — особенности подкапотной реализации, приводящей к разнице в скорости, сокрыты где-то в недрах.

Да, возможно. Для меня были интересны прежде всего цифры — а кто именно быстрее. Самые важные моменты (с моей точки зрения), почему NLog быстрее, я вынес (асинхронность, generics, переиспользование массивов).

Я не смогу цифрами обосновать, а угадывать побаиваюсь.

Это очень легко проверить — сравнить обычный вызов с кучей параметров и вызов с одной готовой строкой, отдельно померив время сборки этой строки.

Про название — на медиуме она у вас более правильно названа.
Это очень легко проверить — сравнить обычный вызов с кучей параметров и вызов с одной готовой строкой, отдельно померив время сборки этой строки.

Чуть сложнее, однако с общей идеей я согласен. Если не забуду сделать таки статью, то добавлю следующие вещи:


  • Два варианта: включено ли логгирование, или нет. В одном из случаев строка даже не будет создаваться в памяти
  • Несколько библиотек (+ SeriLog, т.к. с ним тоже интересно сравнивать, как сказал автор NLog одном коментариев)
  • Передавать одно из четырех:
    • Заранее сформированную строку
    • В виде куче аргументов (т.е. string format + args) за один вызов Debug
    • В виде куче аргументов (т.е. string format + args) и в двух-трех вызовах Debug
    • В виде StringBuilder'а, без вызова ToString
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории