Express vs. Fastify: Hallo Welt-Anwendungsfall

Apr 07 2023
Introduction Express ist zweifellos der König der Web-Frameworks von Node.js.

Einführung

Express ist zweifellos der König der Web-Frameworks von Node.js. Express wurde erstmals 2010 als eines der ersten Pakete auf NPM veröffentlicht. Express ist auch nach 12 Jahren so stark wie eh und je. Die NPM-Downloads (~23 Millionen pro Woche) sind der Beweis:

In ihren eigenen Worten:

Express ist ein minimales und flexibles Node.js-Webanwendungsframework, das eine Reihe robuster Funktionen für Web- und mobile Anwendungen bietet. Da Ihnen unzählige HTTP-Dienstprogrammmethoden und Middleware zur Verfügung stehen, ist die Erstellung einer robusten API schnell und einfach. Express bietet eine dünne Schicht grundlegender Webanwendungsfunktionen, ohne die Node.js-Funktionen zu verdecken, die Sie kennen und lieben.

Fastify ist ein relativ neues Framework für Node.js. Es ist ein weiteres Framework, das von sich behauptet, schnell zu sein. Fastify wurde 2016 eingeführt und ist mittlerweile etwa 6 Jahre alt. Wie der Name schon sagt, besteht der Zweck von Fastify darin, ein schnelles, funktionsreiches Framework anzubieten.

In ihren eigenen Worten:

Fastify ist ein Web-Framework, das sich stark darauf konzentriert, die beste Entwicklererfahrung mit dem geringsten Overhead und einer leistungsstarken Plugin-Architektur zu bieten, inspiriert von Hapi und Express. Soweit wir wissen, ist es eines der schnellsten Web-Frameworks der Stadt.

Was die Beliebtheit angeht, ist Fastify (~700.000 wöchentliche Downloads) bei weitem nicht so beliebt:

Die Autoren/Eigentümer von Fastify behaupten, dass ihr Framework viel, viel schneller ist als Express:

Fastify liefert 62.000 Anforderungen pro Sekunde, während Express nur 12.000 Anforderungen pro Sekunde liefert. Das ist eine hohe Behauptung.

In diesem Artikel führen wir einen „Hello World“-Fall durch und prüfen die Behauptungen von Fastify. Zusätzlich zu den Anforderungen pro Sekunde messen wir auch die Quantile, den Mittelwert, den Median und die maximalen Antwortzeiten. Außerdem sollte ein High-Performer die Systemressourcen nicht beanspruchen. Wir werfen auch einen Blick auf die CPU- und Speicherauslastung. Lass uns anfangen.

Test Umgebung

Die Testumgebung ist:

  • MacBook M1 mit 16G RAM
  • Node.js v19

Fastify-Hallo-Welt-Code:

const fastify = require("fastify")({ logger: false });

fastify.get("/", () => {
  return "Hello world";
});

fastify.listen({ port: 3000 });

const express = require("express");
const app = express();
const port = 3000;

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(port);

Um den Overhead seitens des Testers so gering wie möglich zu halten, ist der Tester eine sehr einfache Multithread-C++-Anwendung, die kampferprobte libcurl verwendet , um HTTP-Anfragen zu stellen. Der Tester stellt lediglich eine Anfrage, erhält eine Antwort und zeichnet die benötigte Zeit auf. Nichts anderes.

Ergebnisse

Es ist wichtig zu sehen, wie sich das Framework für verschiedene Ebenen gleichzeitiger Verbindungen verhält. Wir überprüfen die Ergebnisse für 25 , 100 und 200 gleichzeitige Verbindungen. Mit anderen Worten: Wir prüfen die Ergebnisse auf niedrige , mittlere und hohe Parallelität.

Insgesamt werden 1 Million (eine Million) Anfragen vom Tester an die Anwendung gesendet. Abhängig von der Anzahl der gleichzeitigen Verbindungen wird die Gesamtmenge von 1 Mio. auf jeden Thread aufgeteilt. Beispiel: Bei 25 gleichzeitigen Verbindungen kann jeder Tester-Thread 40.000 Anfragen ausführen. Und bei 200 gleichzeitigen Verbindungen kann jeder Tester-Thread 5.000 Anfragen ausführen.

Zuerst sehen wir die Ergebnisse für 25, 100 und 200 gleichzeitige Verbindungen. Den Ergebnissen folgt eine kurze Analyse.

25 gleichzeitige Verbindungen

100 gleichzeitige Verbindungen

200 gleichzeitige Verbindungen

Analyse

Die Behauptungen der Fastify-Autoren sind wahr . Fastify erwies sich als drei- bis viermal schneller als Express. Bei geringer Parallelität konnte Fastify viermal Anfragen pro Sekunde verarbeiten. Bei hoher Parallelität konnte Fastify dreimal so viele Anfragen pro Sekunde verarbeiten. Was die Systemressourcen betrifft, verbraucht Fastify im Vergleich zu Express immer weniger CPU und Speicher. Fastify ist der klare Gewinner. Es gewann mit großem Vorsprung.

Fastify ist viel, viel schneller als Express. Einverstanden. Dennoch sind die wöchentlichen Downloads (700.000) immer noch nichts im Vergleich zu Express-Downloads (23 Millionen). Etwas zum Staunen!

Wenn Sie Ihre Ansichten teilen möchten, fügen Sie in den Kommentaren bitte die Gründe hinzu, warum Fastify es Ihrer Meinung nach nicht geschafft hat, die Anhängerschaft von Express zu verkürzen, obwohl Fastify um ein Vielfaches schneller ist.