Node.js console.log-performance
Wenn Ihr Node.js code ist übersät mit Konsole.log-Anweisungen sind Sie Einladend performance-Probleme? Lohnt es sich, debug/Produktion schaltet man diese on/off? Ich erkannte die Protokollierung ist wichtig, um die prod im Allgemeinen - aber ich bin generell gespannt, ob die Ausgabe in der Konsole hat eine Leistung Treffer?
In clientseitiges Skript im chrome-es scheint durchaus zu Leistungseinbußen führen, wenn die Konsole geöffnet ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit:
Ich denke, das ist niedrig hängenden Früchte, und fast nicht geben Sie jedem speed bump an alle, wenn Sie die Protokollierung deaktivieren(wenn Sie es nicht konsequent kritische Teile). Wohl die Konsole.Protokoll ist implementiert in pure C. es gibt Auch einige Module zur Verfügung, die Protokollierung deaktivieren, in der Produktion, gerade wie Sie tun können, mit socket.io:
GAMES
Objekt. Dann einfach noch einfor in
zu überprüfen, ob eine Eigenschaft vorhanden ist, während die Konsole die Protokollierung der SPIELE-Objekt vor der überprüfung. Und es war eine deutliche Verzögerung. (3-5 Sekunden) entfernte ich die Konsole an und wieder überprüft Eigentum wieder und es war sofort. Das ist ein großes Thema, weil die Verzögerung macht Ihr system sehr anfällig, wenn Sie mit einer rate limiter inneren Knoten. (Limiter nicht richtig läuft (oder code), bis Sie den io abgeschlossen ist, und sehr gefährlich).console.log
synchrone, und es wird die Blockierung der event-Schleife.Konsole.Protokoll Anrufe in nodejs sind synchrone(!) und blockieren Sie die event-Schleife. Ich habe gerade erfahren, dass wenn ich angemeldet die Ergebnisse der Ausführung (asynchron) sql-Abfragen mit pg. Die Protokollierung nur 20 Elemente und Ihre (wenigen) Eigenschaften sank die Leistung von 3ms 300ms auf meinem lokalen Rechner.
console.log
verlangsamt chrome, weil es tatsächlich die Verbindung mit dem DOM auf jeden Anruf. Die gesamteinspect element
system ist eigentlich nur Tonnen von DOM-Elementen. Wenn Sie anrufenconsole.log
im browser angezeigt wird, dass das Anhängen eines neuen Elements zu derconsole
auf jeden Anruf.Können Sie sehen, wie
console.log
ist eigentlich nur HTML mit der rechten Maustaste auf ein element inconsole
und klickeninspect element
. Dies wird in der Tat öffnen Sie eine neueconsole
Prüfung von einem bereits bestehendenconsole
. 😀Wenn Sie wirklich besorgt über die Leistung, die Sie immer entfernen Sie die
console.log
Funktion vollständig(nicht wirklich empfohlen, weil es kann verwirrend erhalten). Sie können grundsätzlichnoop
die Funktion in den browser-oder server-Seite. Nicht mehrconsole.log
nicht mehr Geschwindigkeit Auswirkungen 😀Wie gesagt, das
console.log
ist asynchron und nicht-blockierend, so wäre es nicht langsam Ihre Anwendung zu viel außer einen tick für den Funktions-Aufruf.Aber es ist eine gute Angewohnheit, um einige module, um wiederum einige logs von bestimmten off-Ebene bereitstellen, wenn es in der Produktion anstelle von console.melden Sie sich direkt. Es wurden mehrere gute wie @Alfred aufgeführt.
Den Nodejs offiziellen blog einen Artikel veröffentlicht, der darauf hindeutet, verwenden Sie JSON-format für die Protokollierung, schau es dir an Service-Protokollierung in JSON mit Bunyan, und Bunyan für nodejs ist wirklich einen Versuch Wert.
console.log
synchrone, und es wird die Blockierung der Ereignis-Schleife