Der Inhalt dieses Artikels befasst sich mit der Frage, was Puffer in Nodejs ist. Die Verwendung der Pufferklasse in Nodejs hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.
JavaScript wurde ursprünglich für Browser entwickelt und verfügt über keinen Mechanismus zum Lesen oder Bearbeiten binärer Datenströme. Die Einführung der Buffer-Klasse gibt NodeJS die Möglichkeit, Dateistreams oder Netzwerk-Binärstreams zu betreiben.
Grundlegende Konzepte von Buffer
Die Speicherzuweisung des Buffer-Objekts erfolgt nicht im Heap-Speicher von V8, aber Node führt eine Speicheranwendung auf C++-Ebene durch, was möglich ist wird als im Speicher verstanden Ein Teil des Speicherplatzes wird separat geöffnet, die Zuweisung des Speichers erfolgt jedoch bei Verwendung auf Knotenebene, und die Freigabe wird auch automatisch durch den GC-Mechanismus von Version 8 im Knoten gesteuert. Die Grundfunktionen von Buffer werden hier nicht im Detail beschrieben. Die offizielle Dokumentation ist sehr detailliert.
Vergleich der Pufferleistung
Normalerweise müssen Daten während der Netzwerkübertragung in Puffer umgewandelt werden. Lassen Sie uns ein Leistungsvergleichsexperiment durchführen.
1. Verwenden Sie einfache Zeichenfolgen, um zum Client zurückzukehren.
const http = require('http'); let hello = '' for (var i = 0; i { res.writeHead(200); res.end(hello); }).listen(8001);
Verwenden Sie den Befehl ab -c 200 -t 100
http://127.0.0.1:8001/ für die Leistung Testen und starten Sie 200 gleichzeitige Clients
Mit Strings kann QPS 4019,70 und die Übertragungsrate 40491,45 KB erreichen pro Sekunde.
2. Puffer verwenden. Konvertieren Sie die Zeichenfolge in ein Buffer-Objekt und senden Sie sie dann an den Client.
const http = require('http'); let hello = '' for (var i = 0; i { res.writeHead(200); res.end(hello); }).listen(8001);
Kommentieren Sie die Pufferkonvertierung aus, verwenden Sie auch ab -c 200 -t 100
http://127.0.0.1:8001/ zum Testen und initiieren Sie außerdem 200 gleichzeitige Clients.
Mit Buffer erreicht der QPS 7130,05 und die Übertragungsrate beträgt 71822,74 KB pro Sekunde.
Die Leistung beträgt 177 % des Originals, wodurch Serverressourcen erheblich gespart werden.
Auf das obige Vergleichsbeispiel wird aus „Ausführliche Einführung in Node JS“ verwiesen.
Dann stellt sich die Frage: Warum gibt es eine so große Leistungsverbesserung?
Der Grund ist eigentlich sehr einfach. Wenn in NodeJS bei der HTTP-Übertragung der zurückgegebene Typ string
ist, werden die Parameter des Typs string
in Puffer konvertiert und weitergeleitet NodeJS-Stream-Stream, der Stück für Stück an den Client zurückgegeben wird. Wenn wir den Puffertyp direkt zurückgeben, erfolgt keine Konvertierungsoperation und wir kehren direkt zurück, was die Wiederverwendungsrate der CPU verringert. Dieser Teil der Logik ist im Node-Quellcode https://github.com/nodejs/node/blob/v10.9.0/lib/_http_outgoing.js#L612 zu finden
Im Leistungsvergleichsbeispiel oben Bei der Rückgabe von string
muss jede Anforderung durch einen Puffer ersetzt und bei der Rückgabe des Puffers direkt zurückgegeben werden. Dieser Puffer wird im Speicher gespeichert, wenn wir den Dienst starten. Jede Anforderung kann den Puffer direkt zurückgeben Speicher, also Puffernutzung. Der vordere und hintere QPS hat sich stark verbessert. string
Detaillierte Erläuterung des Puffermoduls in NodeJS_node.js
Was ist der Pufferpuffer in NodeJS? und was ist das? Detaillierte Erläuterung der Anwendungsbeispiele
Das obige ist der detaillierte Inhalt vonWas ist Puffer in Nodejs? Verwendung der Pufferklasse in Nodejs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!