Mpgo.exe (Herramienta de optimización guiada por perfiles administrados)Mpgo.exe (Managed Profile Guided Optimization Tool)

La herramienta de optimización guiada por perfiles administrados (Mpgo.exe) es una herramienta de línea de comandos que usa escenarios de usuario final comunes para optimizar los ensamblados de imagen nativa creados por el Generador de imágenes nativas (Ngen.exe).The Managed Profile Guided Optimization Tool (Mpgo.exe) is a command-line tool that uses common end-user scenarios to optimize the native image assemblies that are created by the Native Image Generator (Ngen.exe). Esta herramienta permite ejecutar escenarios de aprendizaje que generan datos de perfil.This tool enables you to run training scenarios that generate profile data. El Generador de imágenes nativas (Ngen.exe) usa estos datos para optimizar los ensamblados de aplicación de imagen nativa generados.The Native Image Generator (Ngen.exe) uses this data to optimize its generated native image application assemblies. Un escenario de aprendizaje es una ejecución de prueba de un uso previsto de la aplicación.A training scenario is a trial run of an expected use of your application. Mpgo.exe está disponible en Visual Studio Ultimate 2012 y versiones posteriores.Mpgo.exe is available in Visual Studio Ultimate 2012 and later versions. A partir de Visual Studio 2013, también puede usar Mpgo.exe para optimizar las aplicaciones de Tienda Windows 8.xWindows 8.x Store.Starting with Visual Studio 2013, you can also use Mpgo.exe to optimize Tienda Windows 8.xWindows 8.x Store apps.

La optimización guiada por perfiles mejora el tiempo de inicio de la aplicación, el uso de la memoria (tamaño del espacio de trabajo) y el rendimiento mediante la recopilación de datos procedentes de escenarios de aprendizaje y el uso de dichos datos para optimizar el diseño de las imágenes nativas.Profile-guided optimization improves application startup time, memory utilization (working set size), and throughput by gathering data from training scenarios and using it to optimize the layout of native images.

Si encuentra problemas de rendimiento relacionados con el tiempo de inicio y el tamaño del espacio de trabajo de los ensamblados de Lenguaje intermedio (IL), le recomendamos que primero use Ngen.exe para eliminar los costos de compilación Just-In-Time (JIT) y facilitar el uso compartido de código.When you encounter performance issues with startup time and working set size for Intermediate Language (IL) assemblies, we recommend that you first use Ngen.exe to eliminate just-in-time (JIT) compilation costs and to facilitate code sharing. Si necesita mejoras adicionales, después puede usar Mpgo.exe para optimizar aún más la aplicación.If you need additional improvements, you can then use Mpgo.exe to further optimize your application. Puede usar los datos de rendimiento de los ensamblados de imagen nativa no optimizados como línea base para evaluar las mejoras de rendimiento.You can use the performance data from the un-optimized native image assemblies as a baseline to evaluate the performance gains. Mpgo.exe puede agilizar los tiempos de inicio en frío y reducir el tamaño del espacio de trabajo.Using Mpgo.exe may result in faster cold startup times and a smaller working set size. Mpgo.exe agrega información a los ensamblados de IL que Ngen.exe usa para crear ensamblados de imagen nativa optimizados.Mpgo.exe adds information to IL assemblies that Ngen.exe uses to create optimized native image assemblies. Para obtener más información, vea la entrada sobre cómo mejorar el rendimiento de inicio de las aplicaciones de escritorio del blog de .NET.For more information, see the entry Improving Launch Performance for your Desktop Applications in the .NET blog.

Esta herramienta se instala automáticamente con Visual Studio.This tool is automatically installed with Visual Studio. Para ejecutar la herramienta, use Símbolo del sistema para desarrolladores de Visual Studio (o Símbolo del sistema de Visual Studio en Windows 7) con credenciales de administrador y escriba lo siguiente en dicho símbolo.To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7) with administrator credentials, and type the following at the command prompt. Para más información, consulte Símbolos del sistema.For more information, see Command Prompts.

Para aplicaciones de escritorio:For desktop apps:

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

Para aplicaciones de la Tienda Windows 8.xWindows 8.x Store:For Tienda Windows 8.xWindows 8.x Store apps:

SintaxisSyntax

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

ParámetrosParameters

Ninguno de los argumentos de Mpgo.exe distingue entre mayúsculas y minúsculas.All arguments to Mpgo.exe are case-insensitive. Los comandos llevan como prefijo un guion.Commands are prefixed with a dash.

Nota

Puede usar –Scenario o –Import como comando requerido, pero no ambos.You can use either –Scenario or –Import as a required command, but not both. Si especifica la opción –Reset, no se usa ninguno de los parámetros requeridos.None of the required parameters are used if you specify the –Reset option.

Parámetro requeridoRequired parameter DescripciónDescription
-Scenario <command>-Scenario <command>

-O bien-—or—

-Scenario <packageName>-Scenario <packageName>

o bien-or-

-Import <directory>-Import <directory>
Para las aplicaciones de escritorio, use –Scenario para especificar el comando que ejecutará la aplicación que desea optimizar, incluidos los argumentos de la línea de comandos.For desktop apps, use –Scenario to specify the command to run the application you want to optimize, including any command-line arguments. Ponga tres conjuntos de comillas dobles alrededor de command si especifica una ruta de acceso que contiene espacios, por ejemplo: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files".Use three sets of double quotation marks around command if it specifies a path that includes spaces; for example: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files". No use un único juego de comillas dobles; no funcionará correctamente si command contiene espacios.Do not use double quotation marks; they will not work correctly if command includes spaces.

o bien-or-

Para las aplicaciones de la Tienda Windows 8.xWindows 8.x Store, use –Scenario para especificar el paquete para el que desea generar información de perfil.For Tienda Windows 8.xWindows 8.x Store apps, use –Scenario to specify the package that you want to generate profile information for. Si especifica el nombre para mostrar del paquete o su nombre de familia en lugar del nombre completo, Mpgo.exe seleccionará el paquete cuyo nombre coincide con el nombre proporcionado, si solo hay uno.If you specify the package display name or the package family name instead of the full package name, Mpgo.exe will select the package that matches the name you provided if there is only one match. Si hay varios paquetes que tienen el nombre especificado, Mpgo.exe le pedirá que elija uno.If multiple packages match the specified name, Mpgo.exe will prompt you to choose a package.

-O bien-—or—

Use -Import para especificar que desea usar los datos de optimización de ensamblados optimizados previamente para optimizar los ensamblados de -AssemblyList.Use -Import to specify that optimization data from previously optimized assemblies should be used to optimize the assemblies in -AssemblyList. directory especifica el directorio que contiene los archivos optimizados previamente.directory specifies the directory that contains the previously optimized files. Los ensamblados especificados en –AssemblyList o –AssemblyListFile son las nuevas versiones de los ensamblados que se optimizarán usando los datos de los archivos importados.The assemblies specified in –AssemblyList or –AssemblyListFile are the new versions of the assemblies to be optimized using the data from the imported files. Usar los datos de optimización de una versión anterior de los ensamblados permite optimizar las versiones más recientes sin necesidad de volver a ejecutar el escenario.Using optimization data from older version of assemblies enables you to optimize newer versions of assemblies without re-running the scenario. Sin embargo, si los ensamblados importados y de destino incluyen código significativamente diferente, los datos de optimización resultarán ineficaces.However, if the imported and target assemblies include significantly different code, the optimization data will be ineffective. Los nombres de ensamblados especificados en –AssemblyList o en –AssemblyListFile deben existir en el directorio especificado en –Importdirectory.The assembly names specified in –AssemblyList or –AssemblyListFile must be present in the directory specified by –Importdirectory. Ponga tres conjuntos de comillas dobles alrededor de directory si especifica una ruta de acceso que contiene espacios.Use three sets of double quotation marks around directory if it specifies a path that includes spaces.

Debe especificar –Scenario o –Import, pero no ambos parámetros.You must specify either –Scenario or –Import, but not both parameters.
-OutDir <directory>-OutDir <directory> El directorio en el que se colocarán los ensamblados optimizados.The directory in which to place the optimized assemblies. Si un ensamblado ya existe en la carpeta del directorio de salida, se crea una nueva copia y se anexa un número de índice al nombre del ensamblado; por ejemplo: assemblyname-1.exe.If an assembly already exists in the output directory folder, a new copy is created and an index number is appended to its name; for example: assemblyname-1.exe. Ponga comillas dobles alrededor de directory si especifica una ruta que contiene espacios.Use double quotation marks around directory if it specifies a path that contains spaces.
-AssemblyList <assembly1 assembly2 ...>-AssemblyList <assembly1 assembly2 ...>

-O bien-—or—

-AssemblyListFile <file>-AssemblyListFile <file>
Lista de ensamblados (incluidos los archivos .exe y .dll), separados por espacios, sobre los que desea recopilar información de perfil.A list of assemblies (including .exe and .dll files), separated by spaces, that you want collect profile information about. Puede especificar C:\Dir\*.dll o *.dll para seleccionar todos los ensamblados existentes en el directorio de trabajo especificado o en el actual.You can specify C:\Dir\*.dll or *.dll to select all the assemblies in the designated or current working directory. Vea la sección Comentarios para obtener más información.See the Remarks section for more information.

-O bien-—or—

Archivo de texto que contiene la lista de ensamblados sobre la que desea recopilar información de perfil y en el que cada ensamblado aparece en una línea.A text file that contains the list of assemblies you want to collect profile information about, listed one assembly per line. Si un nombre de ensamblado comienza con un guion (-), use una lista de archivos de ensamblado o cambie el nombre del ensamblado.If an assembly name begins with a hyphen (-), use an assembly file list or rename the assembly.
-AppID <appId>-AppID <appId> El identificador de la aplicación del paquete especificado.The ID of the application in the specified package. Si usa el carácter comodín (*), Mpgo.exe intentará enumerar los AppID del paquete y recurrirá a <package_family_name>!App si se produce un error.If you use the wildcard (*), Mpgo.exe will try to enumerate the AppIDs in the package and will fall back to <package_family_name>!App if it fails. Si especifica una cadena que lleva como prefijo un signo de exclamación (!), Mpgo.exe concatenará el nombre de familia del paquete con el argumento proporcionado.If you specify a string that is prefixed by an exclamation point (!), Mpgo.exe will concatenate the package family name with the argument provided.
-Timeout <seconds>-Timeout <seconds> La cantidad de tiempo del que dispone la aplicación de la Tienda Windows 8.xWindows 8.x Store para ejecutarse antes de que se cierre.The amount of time to allow the Tienda Windows 8.xWindows 8.x Store app to run before the app exits.
Parámetro opcionalOptional parameter DescripciónDescription
-64bit Instrumenta los ensamblados para los sistemas de 64 bits.Instruments the assemblies for 64-bit systems. Debe especificar este parámetro para los ensamblados de 64 bits, incluso si el ensamblado se declara como de 64 bits.You must specify this parameter for 64-bit assemblies, even if your assembly declares itself as 64 bit.
-ExeConfig <filename>-ExeConfig <filename> Especifica el archivo de configuración que el escenario usa para proporcionar la información de versión y del cargador.Specifies the configuration file that your scenario uses to provide version and loader information.
-f Fuerza la inclusión de datos de perfil en un ensamblado binario, incluso si está firmado.Forces the inclusion of the profile data in a binary assembly, even if it's signed. Si el ensamblado está firmado, deberá firmarse de nuevo; de lo contrario, no podrá cargarse ni ejecutarse.If the assembly is signed, it must be re-signed; otherwise, the assembly will fail to load and run.
-Reset Restablece el entorno para asegurarse de que una sesión de generación de perfiles anulada no afecta a los ensamblados; a continuación, la herramienta se cierra.Resets the environment to make certain that an aborted profiling session doesn't affect your assemblies, and then quits. El entorno se restablece de forma predeterminada antes y después de una sesión de generación de perfiles.The environment is reset by default before and after a profiling session.
-Timeout <time in seconds>-Timeout <time in seconds> Especifica la duración del proceso de generación de perfiles en segundos.Specifies the profiling duration in seconds. Use un valor algo mayor que los tiempos de inicio observados para las aplicaciones GUI.Use a value that is slightly more than your observed startup times for GUI applications. Al final del período de tiempo de espera, los datos de perfil se graban aunque la aplicación continúe ejecutándose.At the end of the time-out period, the profile data is recorded although the application continues to run. Si no establece esta opción, la generación de perfiles continuará hasta el cierre de la aplicación, momento en el que se grabarán los datos.If you don't set this option, profiling will continue until application shutdown, at which time the data will be recorded.
-LeaveNativeImages Especifica que las imágenes nativas instrumentadas no deben quitarse después de ejecutar el escenario.Specifies that the instrumented native images shouldn't be removed after running the scenario. Esta opción se usa principalmente cuando se obtiene la aplicación que se especificó para la ejecución del escenario.This option is primarily used when you're getting the application that you specified for the scenario running. Evitará que se vuelvan a crear las imágenes nativas en las ejecuciones posteriores de Mpgo.exe.It will prevent the recreation of native images for subsequent runs of Mpgo.exe. Si especifica esta opción, cuando haya terminado de ejecutar la aplicación puede haber imágenes nativas huérfanas en la caché.When you have finished running your application, there may be orphaned native images in the cache if you specify this option. En este caso, ejecute Mpgo.exe con el mismo escenario y la misma lista de ensamblados y use el parámetro –RemoveNativeImages para quitar estas imágenes nativas.In this case, run Mpgo.exe with the same scenario and assembly list and use the –RemoveNativeImages parameter to remove these native images.
-RemoveNativeImages Realiza la limpieza tras una ejecución en la que se especificó –LeaveNativeImages.Cleans up from a run where –LeaveNativeImages was specified. Si especifica -RemoveNativeImages, Mpgo.exe omite cualquier argumento excepto -64bit y –AssemblyList, y se cierra después de quitar todas las imágenes nativas instrumentadas.If you specify -RemoveNativeImages, Mpgo.exe ignores any arguments except -64bit and –AssemblyList, and exits after removing all instrumented native images.

ComentariosRemarks

Puede usar –AssemblyList y - AssemblyListFile varias veces en la línea de comandos.You can use both –AssemblyList and - AssemblyListFile multiple times on the command line.

Si no especifica nombres de rutas de acceso completas al especificar los ensamblados, Mpgo.exe busca en el directorio actual.If you do not specify full path names when specifying assemblies, Mpgo.exe looks in the current directory. Si especifica una ruta de acceso incorrecta, Mpgo.exe muestra un mensaje de error, pero continúa generando datos para otros ensamblados.If you specify an incorrect path, Mpgo.exe displays an error message but continues to generate data for other assemblies. Si especifica un ensamblado que no se carga durante el escenario de aprendizaje, no se genera ningún dato de aprendizaje para ese ensamblado.If you specify an assembly that is not loaded during the training scenario, no training data is generated for that assembly.

Si un ensamblado de la lista se encuentra en la caché global de ensamblados, no se actualizará con la información de perfil.If an assembly in the list is in the global assembly cache, it will not be updated to contain the profile information. Quítelo de la caché global de ensamblados para que obtenga la información de perfil.Remove it from the global assembly cache to collect profile information.

Solo se recomienda usar Ngen.exe y Mpgo.exe en aplicaciones administradas grandes, ya que normalmente solo se aprecia la ventaja que conllevan las imágenes nativas precompiladas cuando se elimina de forma significativa la compilación JIT en tiempo de ejecución.The use of Ngen.exe and Mpgo.exe is recommended only for large managed applications, because the benefit of precompiled native images is typically seen only when it eliminates significant JIT compilation at run time. Ejecutar Mpgo.exe en aplicaciones del estilo de "Hello World", que no usan el espacio de trabajo de manera intensiva, no solo no proporciona ninguna ventaja, sino que podría impedir que Mpgo.exe recopilara los datos de perfil.Running Mpgo.exe on "Hello World" style applications that aren’t working-set intensive will not provide any benefits, and Mpgo.exe may even fail to gather profile data.

Nota

No se recomienda usar Ngen.exe y Mpgo.exe en aplicaciones ASP.NET y servicios de Windows Communication Foundation (WCF).Ngen.exe and Mpgo.exe are not recommended for ASP.NET applications and Windows Communication Foundation (WCF) services.

Para usar Mpgo.exeTo Use Mpgo.exe

  1. Use un equipo que tenga instalados Visual Studio Ultimate 2012 y la aplicación.Use a computer that has the Visual Studio Ultimate 2012 and your application installed.

  2. Ejecute Mpgo.exe como administrador con los parámetros necesarios.Run Mpgo.exe as an administrator with the necessary parameters. En la sección siguiente hallará comandos de ejemplo.See the next section for sample commands.

    Se crean los ensamblados optimizados de lenguaje intermedio (IL) en la carpeta especificada en el parámetro –OutDir (en los ejemplos, esta es la carpeta C:\Optimized).The optimized intermediate language (IL) assemblies are created in the folder specified by the –OutDir parameter (in the examples, this is the C:\Optimized folder).

  3. Reemplace los ensamblados de IL que usó para Ngen.exe por los nuevos ensamblados de IL que contienen información de perfil procedente del directorio especificado en –OutDir.Replace the IL assemblies you used for Ngen.exe with the new IL assemblies that contain the profile information from the directory specified by –OutDir.

  4. Al instalar la aplicación (con las imágenes proporcionadas por Mpgo.exe) se instalan las imágenes nativas optimizadas.The application setup (using the images provided by Mpgo.exe) will install optimized native images.

Flujo de trabajo sugeridoSuggested Workflow

  1. Cree un conjunto de ensamblados optimizados de IL usando Mpgo.exe con el parámetro –Scenario.Create a set of optimized IL assemblies by using Mpgo.exe with the –Scenario parameter.

  2. Proteja los ensamblados optimizados de IL en el control de código fuente.Check the optimized IL assemblies into source control.

  3. Durante el proceso de compilación, llame a Mpgo.exe con el parámetro –Import como paso posterior a la compilación para generar las imágenes de IL optimizadas que se pasarán a Ngen.exe.In the build process, call Mpgo.exe with the –Import parameter as a post-build step to generate optimized IL images to pass to Ngen.exe.

Este proceso garantiza que todos los ensamblados dispongan de datos de optimización.This process ensures that all assemblies have optimization data. Si protege los ensamblados optimizados actualizados (pasos 1 y 2) con más frecuencia, las cifras de rendimiento serán más coherentes durante el desarrollo del producto.If you check in updated optimized assemblies (steps 1 and 2) more frequently, the performance numbers will be more consistent throughout product development.

Uso de Mpgo.exe desde Visual StudioUsing Mpgo.exe from Visual Studio

Puede ejecutar Mpgo.exe desde Visual Studio (vea el artículo Cómo: Especificación de eventos de compilación (C#)) con las siguientes restricciones:You can run Mpgo.exe from Visual Studio (see the article How to: Specify Build Events (C#)) with the following restrictions:

  • No puede usar rutas de acceso entre comillas con barras diagonales finales, ya que las macros de Visual Studio también usan barras diagonales finales de forma predeterminadaYou cannot use quoted paths with trailing slash marks, because Visual Studio macros also use trailing slash marks by default. (por ejemplo, –OutDir "C:\Output Folder\" no es válido). Para evitar esta restricción, puede omitir la barra diagonal final(For example, –OutDir "C:\Output Folder\" is invalid.) To work around this restriction, you can escape the trailing slash. (por ejemplo, en su lugar, use -OutDir "$(OutDir)\").(For example, use -OutDir "$(OutDir)\" instead.)

  • De forma predeterminada, Mpgo.exe no está en la ruta de acceso de compilación de Visual Studio.By default, Mpgo.exe is not on the Visual Studio build path. Debe agregar la ruta de acceso a Visual Studio o especificar la ruta de acceso completa en la línea de comandos de Mpgo.You must either add the path to Visual Studio or specify the full path on the Mpgo command line. Puede usar –Scenario o el parámetro –Import en el evento posterior a la compilación en Visual Studio.You can use either the –Scenario or the –Import parameter in the post-build event in Visual Studio. Pero el proceso típico es usar –Scenario una vez desde Símbolo del sistema para desarrolladores de Visual Studio y, luego, 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)\".However, the typical process is to use –Scenario one time from a Developer Command Prompt for Visual Studio, and then use –Import to update the optimized assemblies after each build; for example: "C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".

EjemplosExamples

El siguiente comando de Mpgo.exe usado desde Símbolo del sistema para desarrolladores de Visual Studio optimiza una aplicación fiscal:The following Mpgo.exe command from a Developer Command Prompt for Visual Studio optimizes a tax application:

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

El siguiente comando de Mpgo.exe optimiza una aplicación de sonido:The following Mpgo.exe command optimizes a sound application:

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

El siguiente comando de Mpgo.exe usa datos de ensamblados optimizados previamente para optimizar las versiones más recientes de los ensamblados:The following Mpgo.exe command uses data from previously optimized assemblies to optimize newer versions of the assemblies:

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

Vea tambiénSee also