Express vs Fastify: caso d'uso Hello world

Apr 07 2023
Introduzione Express è senza dubbio il re dei framework web di Node.js.

introduzione

Express è senza dubbio il re dei framework web di Node.js. Express è stato rilasciato per la prima volta nel 2010 come uno dei pacchetti iniziali su NPM. Express è più forte che mai, anche dopo 12 anni. I download di NPM (~23M settimanali) ne sono la prova:

Con le loro stesse parole:

Express è un framework per applicazioni Web Node.js minimale e flessibile che fornisce un robusto set di funzionalità per applicazioni Web e mobili. Con una miriade di metodi di utilità HTTP e middleware a tua disposizione, la creazione di un'API robusta è semplice e veloce. Express fornisce uno strato sottile di funzionalità fondamentali per le applicazioni Web, senza oscurare le funzionalità di Node.js che conosci e ami.

Fastify è un framework relativamente nuovo per Node.js. È ancora un altro framework che afferma di essere veloce. Lanciato nel 2016, fastify ha ormai circa 6 anni. Come indica il nome, lo scopo di Fastify è offrire un framework ricco di funzionalità che sia veloce.

Con le loro stesse parole:

Fastify è un framework web fortemente incentrato sulla fornitura della migliore esperienza di sviluppo con il minimo sovraccarico e una potente architettura di plug-in, ispirata a Hapi ed Express. Per quanto ne sappiamo, è uno dei framework web più veloci in città.

In termini di popolarità, Fastify (~700.000 download settimanali) non è neanche lontanamente espresso:

Gli autori/proprietari di Fastify affermano che il loro framework è molto, molto più veloce di express:

Fastify fornisce 62.000 richieste al secondo, mentre express fornisce solo 12.000 richieste al secondo. Questa è un'affermazione alta da fare.

In questo articolo, eseguiremo un caso hello world e verificheremo le affermazioni di Fastify. Oltre a Reqs al secondo, misureremo anche i quantili, la media, la mediana e i tempi di risposta massimi. Inoltre, un high performer non dovrebbe impadronirsi delle risorse di sistema. Daremo anche un'occhiata all'utilizzo della CPU e della memoria. Iniziamo.

Ambiente di test

L'ambiente di prova è:

  • MacBook M1 con 16 GB di RAM
  • Node.js v19

Fastify ciao codice mondiale:

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);

Per mantenere un sovraccarico minimo dal lato del tester, il tester è un'applicazione C++ multithread molto semplice che utilizza libcurl testato in battaglia per effettuare richieste HTTP. Tutto ciò che fa il tester è fare richiesta, ricevere risposta e registrare il tempo impiegato. Nient'altro.

Risultati

È importante vedere come si comporta il framework per un diverso livello di connessioni simultanee. Verificheremo i risultati per 25 , 100 e 200 connessioni simultanee. In altre parole, controlleremo i risultati per la concorrenza bassa , media e alta .

Un totale di 1 milione (un milione) di richieste viene inviato dal tester all'applicazione. A seconda del numero di connessioni simultanee, il totale di 1 milione viene suddiviso in ciascun thread. Ad esempio, per 25 connessioni simultanee, ogni thread del tester può eseguire 40.000 richieste. E per 200 connessioni simultanee, ogni thread del tester può eseguire 5K richieste.

Per prima cosa vedremo i risultati per 25, 100 e 200 connessioni simultanee. I risultati saranno seguiti da una breve analisi.

25 connessioni simultanee

100 connessioni simultanee

200 connessioni simultanee

Analisi

Le affermazioni fatte dagli autori di Fastify sono vere . Fastify si è rivelato tre o quattro volte più veloce di express. A bassa concorrenza, Fastify è stato in grado di elaborare quattro volte le richieste al secondo. In condizioni di concorrenza elevata, Fastify è stato in grado di elaborare il triplo del numero di richieste al secondo. Per quanto riguarda le risorse di sistema, Fastify utilizza sempre meno CPU e memoria rispetto a express. Fastify è il chiaro vincitore. Ha vinto con un ampio margine.

Fastify è molto, molto più veloce di Express. Concordato. Ma ancora i download settimanali (700K) sono ancora niente rispetto a quelli espressi (23M). Qualcosa su cui meravigliarsi!

Se ti piace condividere le tue opinioni, aggiungi nei commenti il ​​motivo per cui pensi che Fastify non sia riuscito a intaccare il seguito di express, anche se Fastify è molte volte più veloce.