Подтвердить что ты не робот

Node.js производительность console.log

Если ваш код Node.js завален документами console.log, вы предлагаете проблемы с производительностью? Стоит ли отладка/производство переключать это вкл/выкл? Я понял, что регистрация важна для prod в целом - но мне вообще интересно, имеет ли производительность на консоли производительность?

На стороне клиента script в chrome это определенно ухудшает производительность, если консоль открыта.

4b9b3361

Ответ 1

Edit:

console.log является синхронным и блокирует цикл событий


Я думаю, что это низкие висячие фрукты, и почти не даст вам какой-либо удар скорости, когда вы отключите ведение журнала (если не использовать строго в критических частях). Вероятно, console.log реализован в чистом C. Также есть некоторые доступные модули, которые могут отключать ведение журнала в процессе производства, так же, как вы можете сделать с socket.io:

Ответ 2

console.log замедляет хром, потому что он фактически взаимодействует с DOM при каждом вызове. Вся система inspect element - это всего лишь тонны элементов DOM. Когда вы вызываете console.log в браузере, ему нужно добавить новый элемент в console для каждого вызова.

Вы можете видеть, как console.log - это просто HTML, щелкнув правой кнопкой мыши по элементу в console и нажав inspect element. Фактически это откроет новый console, проверяющий уже существующий console.: D

Если вы действительно беспокоитесь о производительности, вы всегда можете полностью удалить функцию console.log (не рекомендуется, потому что это может запутать). В основном вы можете noop использовать функцию на стороне браузера или сервера. Больше console.log больше не влияет на скорость: D

console.log=function(){};

Ответ 3

console.log вызовы в nodejs являются синхронными (!) и блокируют цикл событий. Я просто испытал это, когда выполнил регистрацию результатов выполнения (асинхронных) запросов sql с помощью pg. Регистрация только 20 элементов и их (несколько) свойств снизила производительность от 3 мс до 300 мс на моей локальной машине.

Ответ 4

Как сказано выше, console.log является асинхронным и неблокирующим, поэтому он не будет слишком замедлять ваше приложение, кроме одного тика для вызова функции.

Но хорошая привычка использовать какой-либо модуль для перевода некоторых журналов определенного уровня при развертывании в процессе производства, а не напрямую с помощью console.log. В списке @Alfred было несколько хороших.

В официальном блоге Nodejs опубликована статья, в которой предлагается использовать формат JSON для регистрации, проверьте его на Служба регистрации в JSON с Bunyan и Bunyan для nodejs действительно стоит попробовать.