Saltar al contenido principal
agosto 17, 2021

Wave Engine Web mejora el rendimiento con .NET 6.0

Wave Engine, nuestro motor gráfico .NET diseñado para el sector industrial, era soportado en navegadores web desde hace dos años gracias a la tecnología WebAssembly y al gran trabajo de Mono Wasm. Sin embargo, en 2020 no podíamos aprovechar todo el potencial de .NET 5, ya que carecía de importantes funcionalidades y optimizaciones para las aplicaciones sensibles al tiempo de carga.

Recientemente, con la integración de Mono Wasm en .NET 6, consideramos que era el momento oportuno para  revisarlo. Aunque las aplicaciones Vanilla Wasm no están soportadas oficialmente y la tecnología no está madura todavía, hemos conseguido crear una capa sobre Blazor SDK que nos ha permitido desarrollar y ejecutar proyectos Wasm «puros» en .NET 6.0, obteniendo grandes mejoras de rendimiento que queremos compartir con vosotros.

Wasm .NET 6.0: Más rápido que nunca.

El intérprete ha sido mejorado en gran medida en .NET 6, lo que proporciona un aumento del rendimiento en la ejecución de  WebAssembly  «de forma gratuita». Nuestras pruebas de renderizado muestran un aumento de rendimiento del 32% de media.

FPS-net5-vs-net6
Mejora de los tiempos de carga

Los tiempos de carga en web son cruciales, especialmente en WebAssembly, donde los binarios y los assets pueden ser bastante pesados. Pudimos desarrollar un nuevo sistema de empaquetado que es capaz de cargar la mayoría de los archivos en paralelo. También aprovechamos el sistema de compresión Brotli ya implementado en Blazor, para reducir cada archivo al máximo. Los resultados son sorprendentes, ya que la carga en paralelo nos permite alcanzar una velocidad de carga 2,3 veces más rápida de media.

Loading Time .Net 5 vs .Net 6

Files Size .Net 5 vs .Net 6

¿Y qué pasa con AOT?

Aunque el ahead-of-time compilation añade una penalización en el tamaño del archivo, es útil en aplicaciones web con una gran carga de cálculo, ya que este tipo de compilación puede duplicar o más el rendimiento.

Sin embargo, el ahead-of-time compilation en .NET 6 Web Assembly no está lo suficientemente madura, y sólo pudimos compilar en AOT parcialmente, obteniendo un aumento del 47% en el rendimiento. Esperamos ser capaces de compilar en «AOT completo» para finales de año.

AOT FPS .Net 5 vs .Net6

Todas estas pruebas se han realizado en una CPU I7 con 16 GB de RAM y una NVIDIA GeForce RTX 2060, utilizando un benchmark WaveEngine WebGL personalizado con una gran carga de CPU y texturas pesadas.

*Si quieres comprobar las nuevas mejoras gracias a .NET 6.0, no te pierdas esta demo de nuestro brazo robot.

Y si quieres saber más sobre nuestro nuevo motor gráfico, ¡no te pierdas Evergine!

javier carnero
Autor
Javier Carnero
Plain Concepts Research