Производительность Node.js console.log - PullRequest
20 голосов
/ 28 июля 2011

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

В клиентском скрипте в chrome определенно снижается производительность, если консоль открыта.

Ответы [ 4 ]

18 голосов
/ 28 июля 2011

Изменить:

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


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

12 голосов
/ 27 июля 2014

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

10 голосов
/ 29 июля 2011

console.log замедляет Chrome, потому что он фактически взаимодействует с 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(){};
0 голосов
/ 31 марта 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...