6

Fiz o teste Benchmark de 23 Frameworks web! O top 5 é de frameworks na linguagem Rust! Veja os detalhes aqui!

Top 10 abaixo:

Link dos 23 completo: https://rullst.github.io/Benchmarks/
Link do Repo no GitHub: https://github.com/Rullst/Benchmarks

🏅 Official Efficiency Ranking

🏆 RankFrameworkLanguageEfficiency (RPS/MB)JSON RPSDB Single RPSAvg LatencyPeak RAMStatus
🥇 1stActix-WebRust6.778128.654,3112.366,92.34ms18.98MiB✅ Passed
🥈 2ndAxumRust4.580100.620,3318.033,162.61ms21.97MiB✅ Passed
🥉 3rdPoemRust4.34698.795,4812.405,222.68ms22.73MiB✅ Passed
4Rullst 👑Rust4.34490.485,6716.186,73.14ms20.83MiB✅ Passed
5SalvoRust4.14192.218,377.465,662.96ms22.27MiB✅ Passed
6Go-FiberGo4.03299.803,8916.026,642.68ms24.75MiB✅ Passed
7DioxusRust3.44887.638,059.431,992.79ms25.42MiB✅ Passed
8LeptosRust3.02477.135,018.0092.94ms25.51MiB✅ Passed
9Go-GinGo2.89870.219,413.627,194.14ms24.23MiB✅ Passed
10ASP.NET CoreC#71875.723,4711.181,523.63ms105.5MiB✅ Passed

🎯 What is this?

This repository contains a comprehensive 4-tier benchmark suite designed to rigorously evaluate the performance, resilience, and resource efficiency of 23 modern web frameworks across multiple languages.

We don't just guess; we measure. 📊


🧪 Benchmark Methodology (4-Tier Architecture)

To simulate different real-world scenarios, our testing approach is divided into four robust tiers:

🌍 Tier 1: Fast Load (Baseline Performance)

  • Goal: Establish a baseline for raw Requests Per Second (RPS) and latency.
  • Load: 125 concurrent connections for 10 seconds.
  • Endpoints: /text, /json, /db-single, /html

⚡ Tier 2: Concurrency & Latency (High Traffic)

  • Goal: Evaluate behavior under sudden traffic spikes and measure P99 latency.
  • Load: 300 concurrent connections for 30 seconds.
  • Endpoints: /json

🧠 Tier 3: Resource Efficiency (Idle vs. Peak)

  • Goal: Identify CPU and RAM utilization of "greedy" vs. "efficient" architectures.
  • Method: Measure Docker stats during 0 traffic (Idle) vs. 200 concurrent connections (Peak).

🔥 Tier 4: Stress & Resilience (Memory Leak Detection)

  • Goal: Ensure frameworks don't crash or leak memory under prolonged stress.
  • Load: 500 concurrent connections for a sustained 2 minutes.
  • Endpoints: /json

🏅 The Efficiency Ranking Score (RPS/MB)

Our official ranking is determined by the Efficiency Score, which measures how many requests a framework can handle per megabyte of memory it consumes.

  • Formula: Efficiency = JSON RPS (Tier 1) / Peak RAM in MB (Tier 3)
  • Example: A framework handling 100,000 RPS with 20MB RAM scores 5,000. A framework handling 100,000 RPS with 200MB RAM scores 500.
  • The Disqualification Penalty: Any framework that drops connections, crashes, or returns timeout errors during the Tier 4 Stress Test is automatically disqualified and receives 0 Points. Speed is irrelevant if the server collapses under pressure!

💻 Minimum Hardware Requirements

To run these benchmarks locally without skewing the results due to resource starvation (especially during the 500-connection Tier 4 tests), we recommend the following minimum specifications:

  • CPU: 4 Cores / 8 Threads (8+ Cores recommended)
  • RAM: 8GB Minimum (16GB+ recommended)
  • OS: Linux, macOS, or Windows (WSL2)
  • Docker Engine: Ensure Docker is allocated at least 4 CPUs and 8GB of RAM.

📊 Official Tested Hardware

All benchmark results listed in this repository were run on the following environment to ensure consistency:

  • CPU: AMD Ryzen 7 5700U (8 Cores / 16 Threads)
  • RAM: 8GB
  • OS: Windows 11 (Docker with WSL2)

🗄️ Database Architecture

All frameworks connect to a dedicated PostgreSQL 15 container.

  • The database is initialized via the db-init scripts which pre-populate a table called world with thousands of random rows.
  • Frameworks must fetch the World record with ID = 1 for the /db-single endpoint. Connection pooling is strictly recommended.
Carregando publicação patrocinada...
3

Opinião

Eu sinceramente desconfio de qualquer benchmark por serem extremamente enviesados para reforçar um único ponto forte.

10 ASP.NET Core C# 718

Isso aqui me chamou MUITA atenção. O C# ter um desempenho tão baixo cheira muito mal.

Até que fui olhar o código e vi que é simplesmente um cenário fictício, é um benchmark para provar um ponto específico: Desempenho por MB de ram, para o código de exemplo o C# se deu muito mal.

Meu processador de modelos

Para contrapor essa métrica lembre de um caso de um processador de modelos 3d que tive que contruir.

O produto consistia em: eu recebia um modelo 3d, calculava o peso, rederizava numa imagem.

primeira versão: em python, era extremamente eficiente para modelos pequenos, usava uma ram considerável, mas baixa para os modelos de teste.

todos os teste foram feitos com modelos de 10 a 50MB, o python utilizava 300 a 500MB de ram, demorava até 1 segundo para processar.

Até que o cliente enviou um modelo de 1GB

foram 30 minutos e 40GB de RAM para processar no python (na minha máquina pessoal, porque o servidor não aguentou)

Refiz todo o serviço em C# (poderia ser em C++, rust, C puro, qualquer outra compilada, mas eu quis C#)

Basicamente agora eu subia uma engine gráfica, renderizava em openGL.

Processo o primeiro modelo de 10MB: 600MB de ram, 120ms

Pera, o que?

PythonC#
300MB600MB
200ms120ms

Não compensa certo?

processei o modelo de 50MB: 600MB de ram, 120ms

100MB: 601MB de ram, 130ms

Até que processei o modelo de 1GB: 610MB RAM, <1s

sim, 600MB era somente a engine gráfica, 100ms era somente para carregar a engine em memória (uma vez carregada, poucos ms por execução)

E o mais incrível: esse quase 1s não era tempo de CPU, era tempo de DISCO, o serviço mal usava CPU

Tudo isso para defender o C#?

Então, não estou defendendo o C#, só estou mostrando que um benchmark pode ter falhas,

O rust vai sempre ter um desempenho melhor se o desenvolvimento for parecido.

O problema é que o benchmark esconde:

Performance em uma aplicação real

Aqui a linguagem raramente vai ser o gargalo, aplicações reais são I/O bound, o DB vai ser o maior gargalo.

Custo de desenvolvimento

O custo em equipe quase nunca vai compensar a adoção do rust

Linguagem de mais baixo nível -> salários mais altos e tempo maior desenvolvimento

O que adianta economizar 1000 reais por mes em servidor se você está pagando 20000 a mais de salário?

E por último, que relação esse texto todo tem com o post?

Nenhuma! só aproveitei o post para expor uma opinião diferente

1
1

Meus 2 cents,

Parabens pela iniciativa !

Confesso que alguns resultados me deixaram encafifado - p.ex. o Laravel ter falhado em 500 conexoes e portanto desclassificado (apesar de ter pontuacoes de JSON tao altas quanto Rust/GO).

De qualquer forma, eh um benchmark e vale a pena olhar com mais cuidado e entender o que ele tem de informacoes novas ou uteis.

Repositorio devidamente starreado e forkeado - obrigado por compartilhar !

Saude e Sucesso !


Este post foi favoritado via extensão TABNEWS FAVORITOS

Tem curiosidade sobre IA ? Da uma olhada no meu LIVRO: IA PARA ENGENHEIROS

0