Express vs Fastify : cas d'utilisation Hello world

Apr 07 2023
Introduction Express est sans aucun doute le roi des frameworks Web de Node.js.

Introduction

Express est sans aucun doute le roi des frameworks Web de Node.js. Express a été publié pour la première fois en 2010 en tant que l'un des packages initiaux sur NPM. Express est plus solide que jamais, même après 12 ans. Les téléchargements NPM (~23M par semaine) en sont la preuve :

Dans leurs propres mots :

Express est un cadre d'application Web Node.js minimal et flexible qui fournit un ensemble robuste de fonctionnalités pour les applications Web et mobiles. Avec une myriade de méthodes utilitaires HTTP et d'intergiciels à votre disposition, la création d'une API robuste est simple et rapide. Express fournit une fine couche de fonctionnalités d'application Web fondamentales, sans obscurcir les fonctionnalités de Node.js que vous connaissez et aimez.

Fastify est un framework relativement nouveau pour Node.js. C'est encore un autre cadre qui prétend être rapide. Lancé en 2016, fastify a environ 6 ans maintenant. Comme son nom l'indique, le but de Fastify est d'offrir un cadre riche en fonctionnalités et rapide.

Dans leurs propres mots :

Fastify est un framework Web hautement axé sur la fourniture de la meilleure expérience de développement avec le moins de surcharge et une architecture de plug-in puissante, inspirée de Hapi et Express. À notre connaissance, il s'agit de l'un des frameworks Web les plus rapides de la ville.

En termes de popularité, Fastify (~700 000 téléchargements hebdomadaires) est loin d'être express :

Les auteurs/propriétaires de Fastify affirment que leur framework est bien plus rapide qu'express :

Fastify donne 62 000 requêtes par seconde, tandis qu'Express ne donne que 12 000 requêtes par seconde. C'est une grande prétention à faire.

Dans cet article, nous allons exécuter un cas hello world et vérifier les affirmations de Fastify. En plus des Reqs par seconde, nous mesurerons également les quantiles, la moyenne, la médiane et les temps de réponse maximaux. En outre, un interprète très performant ne devrait pas accaparer les ressources système. Nous examinerons également l'utilisation du processeur et de la mémoire. Commençons.

Environnement d'essai

L'environnement de test est :

  • MacBook M1 avec 16 Go de RAM
  • Node.js v19

Fastifiez le code hello world :

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

Pour minimiser les frais généraux du côté du testeur, le testeur est une application C++ multithread très simple qui utilise libcurl testé au combat pour effectuer des requêtes HTTP. Tout ce que fait le testeur est de faire une demande, de recevoir une réponse et d'enregistrer le temps nécessaire. Rien d'autre.

Résultats

Il est important de voir comment le framework se comporte pour un niveau différent de connexions simultanées. Nous allons vérifier les résultats pour 25 , 100 et 200 connexions simultanées. En d'autres termes, nous vérifierons les résultats pour une simultanéité faible , moyenne et élevée .

Au total, 1 million (un million) de requêtes sont envoyées du testeur à l'application. En fonction du nombre de connexions simultanées, le total de 1M est divisé en chaque thread. Par exemple, pour 25 connexions simultanées, chaque thread de testeur peut exécuter 40 000 requêtes. Et pour 200 connexions simultanées, chaque thread de testeur peut exécuter 5 000 requêtes.

Nous verrons d'abord les résultats pour 25, 100 et 200 connexions simultanées. Les résultats seront suivis d'une brève analyse.

25 connexions simultanées

100 connexions simultanées

200 connexions simultanées

Analyse

Les affirmations des auteurs de Fastify sont vraies . Fastify s'est avéré être trois à quatre fois plus rapide qu'express. Avec une faible simultanéité, Fastify a pu traiter quatre fois les requêtes par seconde. Avec une simultanéité élevée, Fastify a pu traiter trois fois plus de requêtes par seconde. En ce qui concerne les ressources système, Fastify utilise toujours moins de CPU et de mémoire par rapport à express. Fastify est clairement le gagnant. Il a gagné par une grande marge.

Fastify est bien plus rapide qu'express. Convenu. Mais les téléchargements hebdomadaires (700K) ne sont toujours rien comparés à ceux d'Express (23M). Quelque chose à se demander!

Si vous aimez partager vos points de vue, ajoutez dans les commentaires pourquoi vous pensez que Fastify n'a pas réussi à faire une brèche dans le suivi d'express, même si Fastify est plusieurs fois plus rapide.