Compartir por


Mpgo.exe (herramienta de optimización guiada por perfiles administrados)

La Herramienta de optimización guiada por perfiles administrados (Mpgo.exe) es una herramienta de línea de comandos que usa escenarios comunes de usuario final para optimizar los ensamblados de imagen nativos creados por el generador de imágenes nativas (Ngen.exe). Esta herramienta le permite ejecutar escenarios de entrenamiento que generan datos de perfil. El generador de imágenes nativas (Ngen.exe) usa estos datos para optimizar sus ensamblados de aplicación de imagen nativa generados. Un escenario de entrenamiento es una ejecución de prueba de un uso esperado de la aplicación. Mpgo.exe está disponible en Visual Studio Ultimate 2012 y versiones posteriores. A partir de Visual Studio 2013, también puedes usar Mpgo.exe para optimizar las aplicaciones de la Tienda Windows 8.x.

La optimización guiada por perfiles mejora el tiempo de inicio de la aplicación, el uso de memoria (tamaño del conjunto de trabajo) y el rendimiento mediante la recopilación de datos de escenarios de entrenamiento y su uso para optimizar el diseño de imágenes nativas.

Cuando se producen problemas de rendimiento con el tiempo de inicio y el tamaño del conjunto de trabajo para los ensamblados de lenguaje intermedio (IL), se recomienda usar primero Ngen.exe para eliminar los costos de compilación Just-In-Time (JIT) y para facilitar el uso compartido de código. Si necesita mejoras adicionales, puede usar Mpgo.exe para optimizar aún más la aplicación. Puede usar los datos de rendimiento de los ensamblados de imágenes nativas no optimizadas como línea base para evaluar las mejoras de rendimiento. El uso de Mpgo.exe puede dar lugar a tiempos de inicio en frío más rápidos y a un tamaño de conjunto de trabajo más pequeño. Mpgo.exe agrega información a los ensamblados il que Ngen.exe usa para crear ensamblados de imagen nativa optimizados. Para obtener más información, consulte la entrada Mejora del rendimiento de inicio de las aplicaciones de escritorio en el blog de .NET.

Esta herramienta se instala automáticamente con Visual Studio. Para ejecutar la herramienta, use el símbolo del sistema para desarrolladores o PowerShell para desarrolladores con credenciales de administrador.

Escriba el siguiente comando en el símbolo del sistema:

Para aplicaciones de escritorio:

mpgo -Scenario <command> [-Import <directory>] -AssemblyList <assembly1>  <assembly2> ... -OutDir <directory> [options]

Para aplicaciones de la Tienda Windows 8.x:

mpgo -Scenario <packageName> -AppID <appId> -Timeout <seconds>

Parámetros

Todos los argumentos para Mpgo.exe no distinguen mayúsculas de minúsculas. Los comandos tienen como prefijo un guión.

Nota:

Puede usar o -Scenario-Import como comando necesario, pero no ambos. No se usa ninguno de los parámetros necesarios si especifica la -Reset opción .

Parámetro requerido Description
-Scenario < mandar>

-O bien-

-Scenario < packageName>

O bien:

-Import < directorio>
En el caso de las aplicaciones de escritorio, use -Scenario para especificar el comando para ejecutar la aplicación que desea optimizar, incluidos los argumentos de la línea de comandos. Use tres conjuntos de comillas dobles alrededor del comando si especifica una ruta de acceso que incluye espacios; por ejemplo: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files". No utilice comillas dobles; no funcionarán correctamente si el comando incluye espacios.

O bien:

Para las aplicaciones de la Tienda Windows 8.x, usa -Scenario para especificar el paquete para el que quieres generar información de perfil. Si especifica el nombre para mostrar del paquete o el nombre de familia del paquete en lugar del nombre completo del paquete, Mpgo.exe seleccionará el paquete que coincida con el nombre que proporcionó si solo hay una coincidencia. Si varios paquetes coinciden con el nombre especificado, Mpgo.exe le pedirá que elija un paquete.

-O bien-

Use -Import para especificar que los datos de optimización de los ensamblados optimizados previamente deben usarse para optimizar los ensamblados en -AssemblyList. directory especifica el directorio que contiene los archivos optimizados anteriormente. Los ensamblados especificados en -AssemblyList o -AssemblyListFile son las nuevas versiones de los ensamblados que se van a optimizar mediante los datos de los archivos importados. El uso de datos de optimización de la versión anterior de ensamblados permite optimizar las versiones más recientes de los ensamblados sin volver a ejecutar el escenario. Sin embargo, si los ensamblados importados y de destino incluyen código significativamente diferente, los datos de optimización serán ineficaces. Los nombres de ensamblado especificados en -AssemblyList o -AssemblyListFile deben estar presentes en el directorio especificado por -Importel directorio. Use tres conjuntos de comillas dobles alrededor del directorio si especifica una ruta de acceso que incluye espacios.

Debe especificar o -Scenario-Import, pero no ambos parámetros.
-OutDir < directorio> Directorio en el que se van a colocar los ensamblados optimizados. Si ya existe un ensamblado en la carpeta del directorio de salida, se crea una nueva copia y se anexa un número de índice a su nombre; por ejemplo: assemblyname-1.exe. Use comillas dobles alrededor del directorio si especifica una ruta de acceso que contiene espacios.
-AssemblyList < assembly1 assembly2 ...>

-O bien-

-AssemblyListFile < archivo>
Lista de ensamblados (incluidos los archivos .exe y .dll), separados por espacios, sobre los que desea recopilar información de perfil. Puede especificar C:\Dir\*.dll o *.dll seleccionar todos los ensamblados del directorio de trabajo designado o actual. Consulte la sección Comentarios para obtener más información.

-O bien-

Un archivo de texto que contiene la lista de ensamblados sobre los que desea recopilar información de perfil, que muestra un ensamblado por línea. Si un nombre de ensamblado comienza con un guión (-), use una lista de archivos de ensamblado o cambie el nombre del ensamblado.
-AppID < appId> Identificador de la aplicación en el paquete especificado. Si usa el carácter comodín (*), Mpgo.exe intentará enumerar los AppID del paquete y volverá a <package_family_name>! Aplicación si se produce un error. Si especifica una cadena con el prefijo de un signo de exclamación (!), Mpgo.exe concatenará el nombre de familia del paquete con el argumento proporcionado.
-Timeout < sobras> Cantidad de tiempo para permitir que la aplicación de la Tienda Windows 8.x se ejecute antes de que se cierre la aplicación.
Parámetro opcional Description
-64bit Instrumenta los ensamblados para sistemas de 64 bits. Debe especificar este parámetro para los ensamblados de 64 bits, incluso si el ensamblado se declara como de 64 bits.
-ExeConfig < Nombre> Especifica el archivo de configuración que usa el escenario para proporcionar información de versión y cargador.
-f Fuerza la inclusión de los datos de perfil en un ensamblado binario, incluso si está firmado. Si el ensamblado está firmado, debe volver a firmarse; De lo contrario, el ensamblado no se cargará y ejecutará.
-Reset Restablece el entorno para asegurarse de que una sesión de generación de perfiles anulada no afecta a los ensamblados y, a continuación, se cierra. El entorno se restablece de forma predeterminada antes y después de una sesión de generación de perfiles.
-Timeout < tiempo en segundos> Especifica la duración de la generación de perfiles en segundos. Use un valor que sea ligeramente mayor que los tiempos de inicio observados para las aplicaciones de GUI. Al final del período de tiempo de espera, los datos del perfil se registran aunque la aplicación sigue ejecutándose. Si no establece esta opción, la generación de perfiles continuará hasta el cierre de la aplicación, en cuyo momento se registrarán los datos.
-LeaveNativeImages Especifica que las imágenes nativas instrumentadas no se deben quitar después de ejecutar el escenario. Esta opción se usa principalmente cuando se obtiene la aplicación que especificó para el escenario en ejecución. Impedirá la recreación de imágenes nativas para ejecuciones posteriores de Mpgo.exe. Cuando haya terminado de ejecutar la aplicación, puede haber imágenes nativas huérfanas en la memoria caché si especifica esta opción. En este caso, ejecute Mpgo.exe con el mismo escenario y lista de ensamblados y use el -RemoveNativeImages parámetro para quitar estas imágenes nativas.
-RemoveNativeImages Limpia desde una ejecución donde -LeaveNativeImages se especificó. Si especifica -RemoveNativeImages, Mpgo.exe omite los argumentos excepto -64bit y -AssemblyList, y sale después de quitar todas las imágenes nativas instrumentadas.

Observaciones

Puede usar y -AssemblyList-AssemblyListFile varias veces en la línea de comandos.

Si no especifica nombres de ruta de acceso completos al especificar ensamblados, Mpgo.exe busca en el directorio actual. Si especifica una ruta de acceso incorrecta, Mpgo.exe muestra un mensaje de error, pero continúa generando datos para otros ensamblados. Si especifica un ensamblado que no se carga durante el escenario de entrenamiento, no se generan datos de entrenamiento para ese ensamblado.

Si un ensamblado de la lista está en la caché global de ensamblados, no se actualizará para contener la información del perfil. Quítelo de la caché global de ensamblados para recopilar información de perfil.

El uso de Ngen.exe y Mpgo.exe solo se recomienda para aplicaciones administradas de gran tamaño, ya que la ventaja de las imágenes nativas precompiladas se suele ver solo cuando elimina una compilación JIT significativa en tiempo de ejecución. La ejecución de Mpgo.exe en aplicaciones de estilo "Hola mundo" que no consumen muchos recursos no proporcionará ninguna ventaja y es posible que Mpgo.exe incluso no recopilen datos de perfil.

Nota:

no se recomienda Ngen.exe y Mpgo.exe para aplicaciones de ASP.NET y servicios de Windows Communication Foundation (WCF).

Para usar Mpgo.exe

  1. Use un equipo que tenga instalado Visual Studio Ultimate 2012 y la aplicación.

  2. Ejecute Mpgo.exe como administrador con los parámetros necesarios. Consulte la sección siguiente para ver los comandos de ejemplo.

    Los ensamblados de lenguaje intermedio optimizado (IL) se crean en la carpeta especificada por el -OutDir parámetro (en los ejemplos, esta es la C:\Optimized carpeta).

  3. Reemplace los ensamblados il que usó para Ngen.exe por los nuevos ensamblados IL que contienen la información de perfil del directorio especificado por -OutDir.

  4. La configuración de la aplicación (con las imágenes proporcionadas por Mpgo.exe) instalará imágenes nativas optimizadas.

Flujo de trabajo sugerido

  1. Cree un conjunto de ensamblados IL optimizados mediante Mpgo.exe con el -Scenario parámetro .

  2. Compruebe los ensamblados il optimizados en el control de código fuente.

  3. En el proceso de compilación, llame a Mpgo.exe con el -Import parámetro como un paso posterior a la compilación para generar imágenes de IL optimizadas para pasar a Ngen.exe.

Este proceso garantiza que todos los ensamblados tengan datos de optimización. Si se comprueban los ensamblados optimizados actualizados (pasos 1 y 2) con más frecuencia, los números de rendimiento serán más coherentes en todo el desarrollo del producto.

Uso de Mpgo.exe desde Visual Studio

Puede ejecutar Mpgo.exe desde Visual Studio (consulte el artículo How to: Specify Build Events (C#)) con las restricciones siguientes:

  • No se pueden usar rutas de acceso entre comillas con marcas de barras diagonales finales, ya que las macros de Visual Studio también usan marcas de barra diagonal finales de forma predeterminada. (Por ejemplo, -OutDir "C:\Output Folder\" no es válido). Para solucionar esta restricción, puede escapar la barra diagonal final. (Por ejemplo, use -OutDir "$(OutDir)\" en su lugar).

  • De forma predeterminada, Mpgo.exe no está en la ruta de acceso de compilación de Visual Studio. Debe agregar la ruta de acceso a Visual Studio o especificar la ruta de acceso completa en la línea de comandos de Mpgo. Puede usar o -Scenario el -Import parámetro en el evento posterior a la compilación en Visual Studio. Sin embargo, el proceso típico es usar -Scenario una vez desde un símbolo del sistema para desarrolladores para Visual Studio y, a continuación, usar -Import para actualizar los ensamblados optimizados después de cada compilación; por ejemplo: "C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".

Examples

El siguiente comando Mpgo.exe desde un símbolo del sistema para desarrolladores para Visual Studio optimiza una aplicación fiscal:

mpgo -scenario "C:\MyApp\MyTax.exe /params par" -AssemblyList Mytax.dll MyTaxUtil2011.dll -OutDir C:\Optimized -TimeOut 15

El siguiente comando Mpgo.exe optimiza una aplicación de sonido:

mpgo -scenario "C:\MyApp\wav2wma.exe -input song1.wav -output song1.wma" -AssemblyList transcode.dll -OutDir C:\Optimized -TimeOut 15

El siguiente comando Mpgo.exe usa datos de ensamblados optimizados previamente para optimizar las versiones más recientes de los ensamblados:

mpgo.exe -import "C:\Optimized" -assemblylist "C:\MyApp\MyTax.dll" "C:\MyApp\MyTaxUtil2011.dll" -outdir C:\ReOptimized

Consulte también