Foto de ensaio da cegueira de Pexels

A menudo, cuando pensamos en optimizar código, la primera imagen que se nos viene a la mente es la de sumergirnos directamente en las líneas de código para encontrar áreas de mejora. Sin embargo, optimizar no siempre significa tocar el código de inmediato. Existen otras aproximaciones que pueden ser igualmente efectivas para llevarnos de A a B.

Por ejemplo, podríamos empezar por analizar el algoritmo que estamos utilizando y determinar si hay uno más eficiente para nuestro problema específico. También podríamos revisar la arquitectura de nuestro sistema y evaluar si hay cambios estructurales que puedan mejorar el rendimiento. Incluso, considerar la posibilidad de paralelizar ciertas tareas o distribuir la carga de trabajo de manera más equilibrada puede resultar en grandes mejoras sin necesidad de modificar el código existente. Y en otras ocasiones existen acciones aun más sencillas que todo lo anterior. ¿Quieres saber cómo llegar de A a B con el mínimo esfuerzo?

Por ejemplo, usando  el ejemplo de mi blog (https://jmfloreszazo.com/benchmark-en-c-logging) y sin cambiar absolutamente nada, podemos hacer lo siguiente:

dotnet run -c Release -property:Optimize=true

Y dejar de usar simplemente:

dotnet run -c Release

El mismo código, sin ningún cambio, ejecutado A resulta ser una opción menos optimizada que B. Sin la optimización nos hace perder milisegundos que, aunque puedan parecer despreciables en un proyecto pequeño, se traducen en pérdidas económicas en un proyecto de alta demanda.

Simplemente observen el siguiente código que he encontrado en un entorno de producción para Docker. ¿Cuántos archivos Docker tienen algo similar?

Conclusión

No solo necesitamos saber desarrollar y estar al tanto de las últimas mejoras en el entorno .NET que nos permiten arañar milisegundos a nuestros procesos, sino que también debemos conocer bien cómo generar los entregables.

Uno de los aspectos que a menudo olvidamos aprender y estudiar en profundidad es cómo ejecutar los comandos de dotnet, ya sea run, publish o cualquier otro.

Por ejemplo:

Recuerda, a veces es más fácil empezar por la puerta principal que meterse directamente hasta la cocina.

Nota

Algunos de estos modificadores se pueden añadir en los ficheros .csproj en la sección PropertyGroup como por ejemplo:

<PropertyGroup>
  <Optimize>True</Optimize>
</PropertyGroup>