Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Средство интерактивной оптимизации управляемого профиля (Mpgo.exe) — это средство командной строки, использующее распространенные сценарии конечных пользователей для оптимизации сборок собственных образов, созданных генератором собственных образов (Ngen.exe). Это средство позволяет выполнять обучающие сценарии, которые создают данные профиля. Генератор собственных образов (Ngen.exe) использует эти данные для оптимизации созданных собственных сборок приложений образов. Сценарий обучения — это пробный запуск ожидаемого использования приложения. Mpgo.exe доступна в Visual Studio Ultimate 2012 и более поздних версиях. Начиная с Visual Studio 2013, вы также можете использовать Mpgo.exe для оптимизации приложений Магазина Windows 8.x.
Оптимизация с помощью профилей улучшает время запуска приложения, использование памяти (размер рабочего набора) и пропускную способность путем сбора данных из сценариев обучения и его использования для оптимизации макета собственных образов.
При возникновении проблем с производительностью при запуске и размере рабочего набора для сборок промежуточного языка (IL) рекомендуется сначала использовать Ngen.exe для устранения затрат на компиляцию JIT и упрощения совместного использования кода. Если вам нужны дополнительные улучшения, вы можете использовать Mpgo.exe для дальнейшего оптимизации приложения. Данные о производительности можно использовать из неоптимизованных собственных сборок образов в качестве базового плана для оценки повышения производительности. Использование Mpgo.exe может привести к более быстрому времени холодного запуска и меньшему размеру рабочего набора. Mpgo.exe добавляет сведения в сборки IL, которые Ngen.exe используются для создания оптимизированных сборок собственного образа. Дополнительные сведения см. в записи "Улучшение производительности запуска для классических приложений " в блоге .NET.
Это средство автоматически устанавливается в Visual Studio. Чтобы запустить средство, используйте командную строку разработчика или PowerShell разработчика с учетными данными администратора.
Введите следующую команду в командной строке:
Для классических приложений:
mpgo -Scenario <command> [-Import <directory>] -AssemblyList <assembly1> <assembly2> ... -OutDir <directory> [options]
Для приложений Магазина Windows 8.x:
mpgo -Scenario <packageName> -AppID <appId> -Timeout <seconds>
Параметры
Все аргументы для Mpgo.exe не учитывает регистр. Команды префиксируются дефисом.
Замечание
Вы можете использовать любую -Scenario или -Import в качестве обязательной команды, но не оба. При указании -Reset параметра не используются ни один из обязательных параметров.
| Обязательный параметр | Description |
|---|---|
-Scenario
<
команда>—или— -Scenario
<
PackageName>–или– -Import
<
каталог> |
Для классических приложений используйте -Scenario команду для запуска приложения, которое требуется оптимизировать, включая любые аргументы командной строки. Используйте три набора двойных кавычки вокруг команды , если он задает путь, содержащий пробелы; например: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files". Не используйте двойные кавычки; Они не будут работать правильно, если команда включает пробелы.–или– Для приложений Магазина Windows 8.x используйте -Scenario для указания пакета, для которого требуется создать сведения о профиле. Если указать отображаемое имя пакета или имя семейства пакетов вместо полного имени пакета, Mpgo.exe выберет пакет, соответствующий указанному имени, если имеется только одно совпадение. Если несколько пакетов соответствуют указанному имени, Mpgo.exe предложит выбрать пакет.—или— Используется -Import для указания того, что данные оптимизации из ранее оптимизированных сборок следует использовать для оптимизации сборок в -AssemblyList.
каталог указывает каталог, содержащий ранее оптимизированные файлы. Сборки, указанные в -AssemblyList или -AssemblyListFile являются новыми версиями сборок, которые будут оптимизированы с помощью данных из импортированных файлов. Использование данных оптимизации из более старой версии сборок позволяет оптимизировать более новые версии сборок без повторного запуска сценария. Однако если импортированные и целевые сборки содержат значительно разные коды, данные оптимизации будут неэффективными. Имена сборок, указанные в -AssemblyList каталоге или -AssemblyListFile должны присутствовать в каталоге, указанном -Import. Используйте три набора двойных кавычки вокруг каталога , если он указывает путь, содержащий пробелы.Необходимо указать либо -Scenario или -Import, но не оба параметра. |
-OutDir
<
каталог> |
Каталог, в котором будут размещаться оптимизированные сборки. Если сборка уже существует в папке выходного каталога, создается новая копия, а номер индекса добавляется к его имени; например: имя сборки-1.exe. Используйте двойные кавычки вокруг каталога , если он указывает путь, содержащий пробелы. |
-AssemblyList
<
assembly1 assembly2 ...>—или— -AssemblyListFile
<
файл> |
Список сборок (включая .exe и .dll файлы), разделенные пробелами, о которых требуется собрать сведения о профиле. Можно указать C:\Dir\*.dll или *.dll выбрать все сборки в указанном или текущем рабочем каталоге. Дополнительные сведения см. в разделе "Примечания".—или— Текстовый файл, содержащий список сборок, о которой требуется собирать сведения о профиле, перечисляется одна сборка на строку. Если имя сборки начинается с дефиса (-), используйте список файлов сборки или переименуйте сборку. |
-AppID
<
appId> |
Идентификатор приложения в указанном пакете. Если вы используете подстановочный знак (*), Mpgo.exe попытается перечислить идентификаторы AppID в пакете и вернуться к <package_family_name>! Приложение, если оно завершается ошибкой. Если указать строку, префиксированную восклицательным знаком (!), Mpgo.exe сцепит имя семейства пакетов с указанным аргументом. |
-Timeout
<
товары второго сорта> |
Время, которое позволяет приложению Магазина Windows 8.x запускаться до выхода приложения. |
| Необязательный параметр | Description |
|---|---|
-64bit |
Инструментирует сборки для 64-разрядных систем. Этот параметр необходимо указать для 64-разрядных сборок, даже если сборка объявляет себя 64-разрядной. |
-ExeConfig
<
имя файла> |
Указывает файл конфигурации, используемый в сценарии для предоставления сведений о версии и загрузчике. |
-f |
Принудительно включает данные профиля в двоичную сборку, даже если он подписан. Если сборка подписана, ее необходимо повторно подписать; В противном случае сборка не будет загружаться и выполняться. |
-Reset |
Сбрасывает среду, чтобы убедиться, что прерванный сеанс профилирования не влияет на сборки, а затем завершает работу. Среда сбрасывается по умолчанию до и после сеанса профилирования. |
-Timeout
<
время в секундах> |
Указывает длительность профилирования в секундах. Используйте значение, которое немного больше времени запуска для приложений графического интерфейса. В конце периода ожидания данные профиля записываются, хотя приложение продолжает выполняться. Если этот параметр не задан, профилирование будет продолжаться до завершения работы приложения, в то время как данные будут записаны. |
-LeaveNativeImages |
Указывает, что инструментированные собственные образы не должны быть удалены после выполнения сценария. Этот параметр в первую очередь используется при получении приложения, указанного для запуска сценария. Это позволит предотвратить восстановление собственных образов для последующих запусков Mpgo.exe. После завершения работы приложения в кэше могут быть потерянные образы в кэше, если указать этот параметр. В этом случае запустите Mpgo.exe с тем же списком сценариев и сборок и используйте -RemoveNativeImages параметр для удаления этих собственных образов. |
-RemoveNativeImages |
Удаляется из запуска, где -LeaveNativeImages был указан параметр. При указании -RemoveNativeImagesMpgo.exe игнорирует все аргументы, кроме -64bit и -AssemblyListзавершает работу после удаления всех инструментированных собственных образов. |
Замечания
Вы можете использовать оба -AssemblyList и -AssemblyListFile несколько раз в командной строке.
Если при указании сборок не указаны полные имена путей, Mpgo.exe выглядит в текущем каталоге. Если указан неверный путь, Mpgo.exe отображает сообщение об ошибке, но продолжает создавать данные для других сборок. Если вы указываете сборку, которая не загружается во время обучения, для этой сборки не создаются данные обучения.
Если сборка в списке находится в глобальном кэше сборок, она не будет обновлена, чтобы содержать сведения о профиле. Удалите его из глобального кэша сборок для сбора сведений о профиле.
Использование Ngen.exe и Mpgo.exe рекомендуется только для крупных управляемых приложений, так как преимущество предварительно скомпилированных собственных образов обычно наблюдается только при устранении значительной компиляции JIT во время выполнения. Выполнение Mpgo.exe в приложениях стилей Hello World, которые не работают с интенсивным набором, не предоставляют никаких преимуществ, и Mpgo.exe даже не смогут собирать данные профиля.
Замечание
Ngen.exe и Mpgo.exe не рекомендуется использовать для ASP.NET приложений и служб Windows Communication Foundation (WCF).
Использование Mpgo.exe
Используйте компьютер с установленным приложением Visual Studio Ultimate 2012.
Запустите Mpgo.exe от имени администратора с необходимыми параметрами. В следующем разделе приведены примеры команд.
Оптимизированные сборки промежуточного языка (IL) создаются в папке, указанной
-OutDirпараметром (в примерах, этоC:\Optimizedпапка).Замените сборки IL, используемые для Ngen.exe новыми сборками IL, содержащими сведения профиля из каталога, указанного в
-OutDirнем.Программа установки приложения (с помощью образов, предоставляемых Mpgo.exe) установит оптимизированные собственные образы.
Предлагаемый рабочий процесс
Создайте набор оптимизированных сборок IL с помощью Mpgo.exe с параметром
-Scenario.Проверьте оптимизированные сборки IL в системе управления версиями.
В процессе сборки вызовите Mpgo.exe с
-Importпараметром в качестве шага после сборки, чтобы создать оптимизированные образы IL для передачи в Ngen.exe.
Этот процесс гарантирует, что все сборки имеют данные оптимизации. Если вы используете обновленные оптимизированные сборки (шаги 1 и 2) чаще всего, показатели производительности будут более согласованными во время разработки продукта.
Использование Mpgo.exe из Visual Studio
Вы можете запустить Mpgo.exe из Visual Studio (см. статью "Практическое руководство. Указание событий сборки (C#)" со следующими ограничениями:
Не удается использовать кавычки с метками косой черты, так как макросы Visual Studio также используют конечные знаки косой черты по умолчанию. (Например,
-OutDir "C:\Output Folder\"недопустимо.) Чтобы обойти это ограничение, можно избежать косой черты. (Например, используйте-OutDir "$(OutDir)\"вместо этого.)По умолчанию Mpgo.exe не находится в пути сборки Visual Studio. Необходимо добавить путь к Visual Studio или указать полный путь в командной строке Mpgo. Вы можете использовать либо
-Scenario-Importпараметр в событии после сборки в Visual Studio. Однако типичный процесс — использовать-Scenarioодин раз из командной строки разработчика для Visual Studio, а затем использовать-Importдля обновления оптимизированных сборок после каждой сборки, например:"C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\"
Примеры
Следующая команда Mpgo.exe из командной строки разработчика для Visual Studio оптимизирует налоговое приложение:
mpgo -scenario "C:\MyApp\MyTax.exe /params par" -AssemblyList Mytax.dll MyTaxUtil2011.dll -OutDir C:\Optimized -TimeOut 15
Следующая команда Mpgo.exe оптимизирует звуковое приложение:
mpgo -scenario "C:\MyApp\wav2wma.exe -input song1.wav -output song1.wma" -AssemblyList transcode.dll -OutDir C:\Optimized -TimeOut 15
Следующая команда Mpgo.exe использует данные из ранее оптимизированных сборок для оптимизации новых версий сборок:
mpgo.exe -import "C:\Optimized" -assemblylist "C:\MyApp\MyTax.dll" "C:\MyApp\MyTaxUtil2011.dll" -outdir C:\ReOptimized