Node.js производительность console.log
Если ваш код Node.js завален документами console.log, вы предлагаете проблемы с производительностью? Стоит ли отладка/производство переключать это вкл/выкл? Я понял, что регистрация важна для prod в целом - но мне вообще интересно, имеет ли производительность на консоли производительность?
На стороне клиента script в chrome это определенно ухудшает производительность, если консоль открыта.
Ответы
Ответ 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 действительно стоит попробовать.