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

Carregando publicação patrocinada...