Heim  >  Artikel  >  Web-Frontend  >  Was ist Puffer in Nodejs? Verwendung der Pufferklasse in Nodejs

Was ist Puffer in Nodejs? Verwendung der Pufferklasse in Nodejs

不言
不言Original
2018-08-18 11:03:462653Durchsuche

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

Was ist Puffer in Nodejs? Verwendung der Pufferklasse in Nodejs

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.

Was ist Puffer in Nodejs? Verwendung der Pufferklasse in Nodejs

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

Daher können beim Schreiben von Geschäftscode einige Ressourcen im Voraus in Puffertypen (z. B. JS, CSS und andere statische Ressourcendateien) konvertiert und der Puffer beispielsweise direkt an den Client zurückgegeben werden In einigen Dateiweiterleitungsszenarien wird der erhaltene Inhalt in einem Puffer gespeichert und direkt weitergeleitet, um zusätzliche Konvertierungsvorgänge zu vermeiden.

Verwandte Empfehlungen:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn