Preloader Close

.NET 9.0 ha traído avances significativos en el rendimiento del procesamiento de JSON, consolidando su posición como una plataforma de alto rendimiento. Este artículo explora cómo estas mejoras impactaron a Corvus.JsonSchema, una biblioteca de código abierto especializada en serialización y validación de JSON mediante JSON Schema, desarrollada por endjin.

Desde su lanzamiento inicial en .NET 7.0, Corvus.JsonSchema ya mostraba un desempeño notable, sustentado por técnicas optimizadas discutidas en conferencias previas por Ian Griffiths. Sin embargo, el cambio a .NET 8.0 proporcionó un incremento del 20% en rendimiento sin necesidad de modificar el código. Esto marcó un precedente para lo que llegaría con .NET 9.0.

Con el lanzamiento de .NET 9.0, se analizaron los puntos de referencia utilizando la última versión de Corvus.JsonSchema (4.0.1). Los resultados mostraron un incremento del 32% en el rendimiento. Este avance se divide en un 20% derivado del entorno de ejecución mejorado y un 13% adicional gracias a la integración de las nuevas APIs de System.Text.Json.

En comparación con la versión inicial en .NET 7.0, esto representa un avance acumulado cercano al 50%. La mejora se debe, en parte, a cambios fundamentales en la generación de código JIT, como la implementación de una única barrera de memoria para copiar estructuras, en lugar de múltiples barreras para cada campo.

El análisis se realizó en un procesador Intel Core i7-13800H de 13.ª generación, evaluando la validación de una matriz que contiene 10,000 documentos JSON pequeños, típicos de una carga útil en una API web. Los resultados son los siguientes:

MétodoVersión .NETTiempo Promedio (ms)RelaciónAsignaciones
ValidateLargeArray V3.NET 7.017,0841.3413B
ValidateLargeArray V3.NET 8.012,7261.001B
ValidateLargeArray V3.NET 9.010,1220.8017B
ValidateLargeArray V4.NET 9.08,7000.6817B
Nota: Las asignaciones reportadas por Benchmark DotNet pueden no ser precisas, ya que en entornos de 64 bits es improbable tener 1 byte de asignación real.

Las mejoras no terminan aquí. Con .NET 10 en el horizonte, ya se han aceptado solicitudes de cambios en el repositorio de dotnet/runtime, incluyendo acceso sin procesar a nombres de propiedades JSON. Aunque estas actualizaciones no impactan directamente en el rendimiento actual, sí podrían mejorar la validación de propiedades en esquemas complejos.

Sin embargo, las mejoras interanuales del 20%, aunque significativas, parecen acercarse a un límite de rendimiento, salvo que el equipo detrás del JIT descubra nuevos métodos inesperados para optimizar aún más.

Conclusión

.NET 9.0 no solo incrementó el rendimiento de procesamiento JSON en un 32%, sino que también sentó las bases para futuras mejoras en .NET 10. Estas innovaciones refuerzan la posición de la plataforma como una opción líder para aplicaciones que requieren alto rendimiento en procesamiento de datos JSON, consolidando la confianza de desarrolladores y empresas en su ecosistema.

Para mayor información, visita el artículo oficial en el siguiente enlace: Cómo .NET 9.0 mejoró el rendimiento del esquema JSON en un 32%.