MSBuild Profiler: ¿por qué mi build tarda una eternidad?

La cuadrillita del Debugging & Optimization Team de Plain Concepts somos bastante fanáticos de los profilers. Hay un arsenal de ellos: el profiler de Visual Studio, el CLR Profiler, el Memprofiler de SciTech, VTune de Intel, el profiler de SQL Server… cada uno con sus puentos fuertes y débiles. Todos estos profilers se centran en mejorar la velocidad de ejecución de nuestros programas.

Pues bien, hoy me he topado con un profiler, el MSBuild Profiler, radicalmente diferente, pero igualmente útil. Este profiler nos permite ‘instrumetar’ una build de MSBuild para analizar donde está fugando rendimiento. El procedimiento es bien simple, este profiler es capaz de analizar la salida de un logger a medida de MSBuild, proporcionado con el propio profiler. Basta con lanzar nuestra build con ese logger como salida para que el profiler nos de información sobre donde se pierde el tiempo en nuestra build, para ello basta con usar el parámetro /l de MSBuild que permite estarblecer el logger de salida que nos interese, en este caso: MSBuildProfilerLogger:

MSBuild.exe buildfile.proj  /l:MSBuildProfileLogger,MSBuildProfiler,Version=1.0.1.0,Culture=neutral,PublicKeyToken=09544254e89d148c

Esto arranca una instancia de MSBuild Profiler de manera interactiva. Puede ser que no sea esto lo que nos interese, por ejemplo si queremos lanzar una build con TFSBuild. Para estas situaciones el MSBuildProfilerLogger admite un parámetro file que nos pemite genera un archivo .snapshot con la información de rendimeinto de la build:

MSBuild.exe buildfile.proj  /l:MSBuildProfileLogger,MSBuildProfiler,Version=1.0.1.0,Culture=neutral,PublicKeyToken=09544254e89d148c,file=out.snapshot

Luego podremos cargar en el MSBuild Profiler este archivo para ver los resultados, tal y como se muestra en la pantalla siguiente:

MSBuildProfiler 

Sin duda una herramienta excelente para acelerar nuestras builds.

Un comentario en “MSBuild Profiler: ¿por qué mi build tarda una eternidad?”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *