Express vs Fastify: caso de uso Hello world
Introdução
Express é, sem dúvida, o rei dos frameworks web do Node.js. O Express foi lançado pela primeira vez em 2010 como um dos pacotes iniciais do NPM. O Express está mais forte do que nunca, mesmo depois de 12 anos. Os downloads do NPM (~23 milhões semanais) são a prova:
Em suas próprias palavras:
Express é uma estrutura de aplicativo da web Node.js mínima e flexível que fornece um conjunto robusto de recursos para aplicativos da web e móveis. Com uma infinidade de métodos utilitários HTTP e middleware à sua disposição, criar uma API robusta é rápido e fácil. O Express fornece uma camada fina de recursos fundamentais de aplicativos da Web, sem obscurecer os recursos do Node.js que você conhece e adora.
Fastify é uma estrutura relativamente nova para Node.js. É mais um framework que afirma ser rápido. Lançado em 2016, o fastify já tem cerca de 6 anos. Como o nome indica, o objetivo do Fastify é oferecer uma estrutura rica em recursos que seja rápida.
Em suas próprias palavras:
O Fastify é uma estrutura da Web altamente focada em fornecer a melhor experiência de desenvolvedor com o mínimo de sobrecarga e uma poderosa arquitetura de plug-in, inspirada no Hapi e no Express. Tanto quanto sabemos, é um dos frameworks web mais rápidos da cidade.
Em termos de popularidade, o Fastify (~ 700 mil downloads semanais) está longe de ser expresso:
Os autores/proprietários do Fastify afirmam que sua estrutura é muito, muito mais rápida do que expressa:
O Fastify fornece 62 mil reqs por segundo, enquanto o express fornece apenas 12 mil reqs por segundo. Essa é uma afirmação difícil de fazer.
Neste artigo, vamos executar um caso hello world e verificar as alegações do Fastify. Além de Reqs por segundo, também mediremos os quantis, média, mediana e tempos máximos de resposta. Além disso, um alto desempenho não deve monopolizar os recursos do sistema. Também veremos o uso da CPU e da memória. Vamos começar.
Ambiente de teste
O ambiente de teste é:
- MacBook M1 com 16G RAM
- Node.js v19
Fastify código 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);
Para manter a sobrecarga mínima do lado do testador, o testador é um aplicativo C++ multiencadeado muito simples que usa libcurl testado em batalha para fazer solicitações HTTP. Tudo o que o testador faz é solicitar, receber a resposta e registrar o tempo gasto. Nada mais.
Resultados
É importante ver como a estrutura se comporta para um nível diferente de conexões simultâneas. Verificaremos os resultados de 25 , 100 e 200 conexões simultâneas. Em outras palavras, verificaremos os resultados para baixa , média e alta simultaneidade.
Um total de 1 milhão (um milhão) de solicitações são enviadas do testador para o aplicativo. Dependendo do número de conexões simultâneas, o total de 1M é dividido em cada thread. Por exemplo — para 25 conexões simultâneas, cada thread do testador consegue executar 40 mil solicitações. E para 200 conexões simultâneas, cada thread do testador consegue executar 5K de solicitações.
Primeiro veremos os resultados para 25, 100 e 200 conexões simultâneas. Os resultados serão seguidos de uma breve análise.
25 conexões simultâneas
100 conexões simultâneas
200 conexões simultâneas
Análise
As afirmações feitas pelos autores do Fastify são verdadeiras . O Fastify acabou sendo três a quatro vezes mais rápido que o Express. Em baixa simultaneidade, o Fastify foi capaz de processar quatro solicitações por segundo. Em alta simultaneidade, o Fastify conseguiu processar três vezes o número de solicitações por segundo. Em relação aos recursos do sistema, o Fastify sempre usa menos CPU e memória quando comparado ao Express. Fastify é o vencedor claro. Ganhou por uma grande margem.
Fastify é muito, muito mais rápido do que expresso. Acordado. Mas ainda assim os downloads semanais (700K) ainda não são nada quando comparados aos expressos (23M). Algo para se perguntar!
Se você gosta de compartilhar suas opiniões, adicione nos comentários sobre por que você acha que o Fastify falhou em fazer uma diferença no número de seguidores do Express, embora o Fastify seja muitas vezes mais rápido.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)