Benchmark 2025: C# (.NET) contra Python, Go y Rust — ¿quién es más rápido?
En 2025, la elección del lenguaje de programación para sistemas de alta carga se vuelve cada vez más crítica. La cuestión del rendimiento es especialmente relevante para el desarrollo backend, microservicios y procesamiento de datos. Realizamos una serie de pruebas, comparando C# (.NET 9) con sus principales competidores: Python 3.13, Go 1.23 y Rust 1.80. Los resultados fueron inesperados para muchos desarrolladores.
Metodología de prueba
Para la pureza del experimento, utilizamos tres tareas típicas:
- CPU-bound: cálculo de 50 000 números primos (algoritmo de la criba de Eratóstenes).
- IO-bound: descarga paralela de 1000 solicitudes HTTP con procesamiento JSON.
- Memoria: ordenamiento de un array de 10 millones de enteros con medición del consumo máximo de RAM.
Todas las pruebas se ejecutaron en el mismo hardware (Intel Core i9-14900K, 64 GB DDR5, NVMe SSD) en modos monohilo y multihilo.
Resultados del benchmark
Analicemos los indicadores clave de cada categoría:
1. Cálculos (CPU-bound)
- C# (.NET 9): 2.1 segundos (con compilación AOT — 1.8 s).
- Rust: 1.6 segundos — líder absoluto, pero la diferencia con C# es mínima.
- Go: 3.4 segundos — buen resultado, pero inferior a C# en un 40%.
- Python (PyPy): 18.2 segundos — previsiblemente más lento, aunque PyPy ofrece una aceleración de 4x frente a CPython.
2. Trabajo con red y JSON (IO-bound)
- C# (.NET): 1.9 segundos — System.Text.Json y async basado en Task mostraron un rendimiento excepcional.
- Go: 2.1 segundos — las gorutinas manejan bien, pero la serialización es inferior a C#.
- Rust (Tokio): 2.0 segundos — casi a la par con C#, pero más complejo de escribir código.
- Python (asyncio): 5.8 segundos — el GIL y el lento análisis JSON afectan.
3. Consumo de memoria
- Rust: 120 MB — consumo mínimo, las zero-cost abstractions funcionan.
- C# (.NET): 175 MB — buen indicador gracias a las optimizaciones del GC en .NET 9.
- Go: 210 MB — ligeramente superior debido al runtime de las gorutinas.
- Python: 890 MB — los objetos y el tipado dinámico provocan un enorme consumo.
Conclusiones: ¿para quién es adecuado C# en 2025?
El benchmark demuestra claramente que C# (.NET 9) ha ocupado una posición sólida como lenguaje universal con un excelente equilibrio entre velocidad, memoria y facilidad de desarrollo. Si Rust sigue siendo la opción para la programación de sistemas, y Go para microservicios simples, entonces C# es ideal para soluciones empresariales, juegos (Unity) y aplicaciones web de alta carga. Python, lamentablemente, incluso con las nuevas optimizaciones, sigue siendo un lenguaje para prototipado y data science, pero