2

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

Carregando publicação patrocinada...
-2

No próprio site tem um aviso em inglês que eu traduzi aqui pra vc:

💡 Por que frameworks famosos "fracassam" neste benchmark? Eles são ruins? De jeito nenhum! Frameworks como Django, Laravel e Express sustentam algumas das maiores empresas do mundo (Instagram, Spotify, Netflix). O motivo pelo qual eles "fracassam" em nosso teste de estresse extremo de Nível 4 (Tier 4) é que suas arquiteturas padrão (Node.js de thread única, workers síncronos e bloqueantes em Python/PHP) não foram projetadas para lidar com centenas de conexões simultâneas de longa duração em uma única máquina sem configurações adicionais.

No mundo real, grandes empresas de tecnologia resolvem isso investindo pesado em escalabilidade horizontal (centenas de servidores), balanceadores de carga e sistemas avançados de cache. No entanto, frameworks criados com Rust (como o Rullst) ou Go utilizam nativamente loops de eventos assíncronos e micro-threads (goroutines). Isso permite que eles gerenciem milhares de conexões simultâneas em um servidor barato de US$ 5/mês, com um consumo de memória RAM praticamente nulo, resultando em custos de nuvem significativamente menores e uma resiliência extremamente robusta.