ASP.NET: ¿Es realmente perjudicial el modo debug?
Aunque es un tema muy comentado, quiero hacer hincapié sobre los problemas de rendimiento del modo debug. El motivo es que seguimos encontrando muchos casos en los que en modo debug está afectando gravemente al rendimiento de las aplicaciones.
En estos artículos https://support.microsoft.com/kb/2580348 y https://blogs.msdn.com/b/tess/archive/2006/04/13/575364.aspx tenemos información sobre las acciones que realizan cuando se activa el modo debug:
- Code will execute slower due to additional debug paths being enabled.
- Compilation will take longer because additional debug information is being generated, such as symbol (.pdb) files.
- Execution timeout is extended to 30,000,000 seconds.
- Scripts and images downloaded from the WebResource.axd and ScriptResource.axd handlers are not cached.
- Code optimization is disabled.
¿Cuáles son los efectos prácticos de tener habilitado el modo debug en nuestras aplicaciones? Al final el resultado es que nuestra aplicación se va a tardar más en realizar las mismas acciones que si no estuviese el debug habilitado.
En este sencillo ejemplo podemos ver una operación que tiene varias iteraciones. El código captura el tiempo antes de realizar unas iteraciones y justo después de que terminen. Podemos ver que si el modo debug está habilitado y las librerías están compiladas en como debug, el tiempo de ejecución de la secuencia es de 29 segundos.
Sin embargo, ese mismo código, ejecutado sin el modo debug y con las librerías compiladas como release, tarda 11 segundos. Estamos hablando de que tarda tres veces menos cambiando un parámetro en el fichero de configuración y un parámetro en el Visual Studio.
No quiero decir que haciendo eso se va a mejorar tres veces más el tiempo de ejecución, puesto que dependerá de la codificación de la aplicación y de otros factores, pero sí que hará que el rendimiento sea mucho mejor.
Espero que os sirva.
- José Ortega Gutiérrez