Express vs Fastify: caso d'uso Hello world
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.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































