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?
| Python | C# |
|---|---|
| 300MB | 600MB |
| 200ms | 120ms |
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