Mpgo.exe (Alat Pengoptimalan Terpandu Profil Terkelola)
Alat Pengoptimalan Terpandu Profil Terkelola (Mpgo.exe) adalah alat baris perintah yang menggunakan skenario pengguna akhir umum untuk mengoptimalkan rakitan gambar asli yang dibuat oleh Native Image Generator (Ngen.exe). Alat ini memungkinkan Anda menjalankan skenario pelatihan yang menghasilkan data profil. Native Image Generator (Ngen.exe) menggunakan data ini untuk mengoptimalkan rakitan aplikasi gambar asli yang dihasilkan. Skenario pelatihan adalah uji coba penggunaan aplikasi Anda yang diharapkan. Mpgo.exe tersedia di Visual Studio Ultimate 2012 dan versi yang lebih baru. Dimulai dengan Visual Studio 2013, Anda juga dapat menggunakan Mpgo.exe untuk mengoptimalkan aplikasi Windows 8.x Store.
Pengoptimalan yang dipandu profil meningkatkan waktu mulai aplikasi, pemanfaatan memori (ukuran set kerja), dan throughput dengan mengumpulkan data dari skenario pelatihan dan menggunakannya untuk mengoptimalkan tata letak gambar asli.
Ketika Anda mengalami masalah performa dengan waktu mulai dan ukuran set kerja untuk rakitan Bahasa Perantara (IL), kami sarankan Anda terlebih dahulu menggunakan Ngen.exe untuk menghilangkan biaya kompilasi just-in-time (JIT) dan untuk memfasilitasi berbagi kode. Jika Anda memerlukan peningkatan tambahan, Anda kemudian dapat menggunakan Mpgo.exe untuk mengoptimalkan aplikasi Anda lebih lanjut. Anda dapat menggunakan data performa dari rakitan gambar asli yang tidak dioptimalkan sebagai garis besar untuk mengevaluasi perolehan performa. Menggunakan Mpgo.exe dapat mengakibatkan waktu mulai dingin yang lebih cepat dan ukuran set kerja yang lebih kecil. Mpgo.exe menambahkan informasi ke rakitan IL yang Ngen.exe gunakan untuk membuat rakitan gambar asli yang dioptimalkan. Untuk informasi selengkapnya, lihat entri Meningkatkan Performa Peluncuran untuk Aplikasi Desktop Anda di blog .NET.
Alat ini otomatis terpasang dengan Visual Studio. Untuk menjalankan alat ini, gunakan Perintah Pengembang atau Developer PowerShell dengan mandat administrator.
Masukkan perintah berikut di perintah:
Untuk aplikasi desktop:
mpgo –Scenario <command> [-Import <directory>] –AssemblyList <assembly1> <assembly2> ... -OutDir <directory> [options]
Untuk aplikasi Windows 8.x Store:
mpgo –Scenario <packageName> -AppID <appId> -Timeout <seconds>
Parameter
Semua argumen untuk Mage.exe tidak peka huruf besar/kecil. Perintah diawali dengan tanda hubung.
Catatan
Anda dapat menggunakan –Scenario
atau –Import
sebagai perintah yang diperlukan, tetapi tidak keduanya. Tidak ada parameter yang diperlukan yang digunakan jika Anda menentukan opsi –Reset
.
Parameter yang diperlukan. | Deskripsi |
---|---|
-Scenario <command>—or— -Scenario <packageName>-atau- -Import <directory> |
Untuk aplikasi desktop, gunakan –Scenario untuk menentukan perintah untuk menjalankan aplikasi yang ingin Anda optimalkan, termasuk argumen baris perintah apa pun. Gunakan tiga set tanda kutip ganda di sekitar command jika menentukan jalur yang menyertakan spasi; misalnya: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files" . Jangan gunakan tanda kutip ganda; mereka tidak akan bekerja dengan benar jika command menyertakan spasi.-atau- Untuk aplikasi Windows 8.x Store, gunakan –Scenario untuk menentukan paket yang ingin Anda buat informasi profilnya. Jika Anda menentukan nama tampilan paket atau nama keluarga paket alih-alih nama paket lengkap, Mpgo.exe akan memilih paket yang cocok dengan nama yang Anda berikan jika hanya ada satu kecocokan. Jika beberapa paket cocok dengan nama yang ditentukan, Mpgo.exe akan meminta Anda untuk memilih paket.—or— Gunakan -Import untuk menentukan bahwa data pengoptimalan dari rakitan yang dioptimalkan sebelumnya harus digunakan untuk mengoptimalkan rakitan di -AssemblyList . directory menentukan direktori yang berisi file yang dioptimalkan sebelumnya. Rakitan yang ditentukan dalam –AssemblyList atau –AssemblyListFile adalah versi baru rakitan yang akan dioptimalkan menggunakan data dari file yang diimpor. Menggunakan data pengoptimalan dari versi rakitan yang lebih lama memungkinkan Anda mengoptimalkan versi rakitan yang lebih baru tanpa menjalankan kembali skenario. Namun, jika rakitan yang diimpor dan ditargetkan mencakup kode yang berbeda secara signifikan, data pengoptimalan akan tidak efektif. Nama rakitan yang ditentukan di –AssemblyList atau –AssemblyListFile harus ada dalam direktori yang ditentukan oleh –Import directory. Gunakan tiga set tanda kutip ganda di sekitar directory jika menentukan jalur yang menyertakan spasi.Anda harus menentukan –Scenario atau –Import , tetapi tidak kedua parameter. |
-OutDir <directory> |
Direktori tempat menempatkan rakitan yang dioptimalkan. Jika rakitan sudah ada di folder direktori output, salinan baru dibuat dan nomor indeks ditambahkan ke namanya; misalnya: assemblyname-1.exe. Gunakan tanda kutip ganda di sekitar directory jika menentukan jalur yang berisi spasi. |
-AssemblyList <assembly1 assembly2 ...>—or— -AssemblyListFile <file> |
Daftar rakitan (termasuk file .exe dan .dll), dipisahkan oleh spasi, yang ingin Anda kumpulkan informasi profilnya. Anda dapat menentukan C:\Dir\*.dll atau *.dll untuk memilih semua rakitan di direktori kerja yang ditunjuk atau saat ini. Lihat bagian Keterangan untuk informasi selengkapnya.—or— File teks yang berisi daftar rakitan yang ingin Anda kumpulkan informasi profilnya, mencantumkan satu rakitan per baris. Jika nama rakitan dimulai dengan tanda hubung (-), gunakan daftar file rakitan atau ganti nama rakitan. |
-AppID <appId> |
ID aplikasi dalam paket yang ditentukan. Jika Anda menggunakan wildcard (*), Mpgo.exe akan mencoba menghitung AppID dalam paket dan akan kembali ke <package_family_name>! Aplikasi jika gagal. Jika Anda menentukan string yang diawali dengan tanda seru (!), Mpgo.exe akan menggabungkan nama keluarga paket dengan argumen yang disediakan. |
-Timeout <seconds> |
Jumlah waktu untuk memungkinkan aplikasi Windows 8.x Store berjalan sebelum aplikasi keluar. |
Parameter opsional. | Deskripsi |
---|---|
-64bit |
Instrumen rakitan untuk sistem 64-bit. Anda harus menentukan parameter ini untuk rakitan 64-bit, bahkan jika rakitan Anda menyatakan dirinya sebagai 64 bit. |
-ExeConfig <filename> |
Menentukan file konfigurasi yang digunakan skenario Anda untuk memberikan informasi versi dan pemuat. |
-f |
Memaksa penyertaan data profil dalam rakitan biner, bahkan jika ditandatangani. Jika rakitan ditandatangani, rakitan harus ditandatangani ulang; jika tidak, rakitan akan gagal dimuat dan dijalankan. |
-Reset |
Mengatur ulang lingkungan untuk memastikan bahwa sesi pembuatan profil yang dibatalkan tidak memengaruhi rakitan Anda, lalu berhenti. Lingkungan diatur ulang secara default sebelum dan sesudah sesi pembuatan profil. |
-Timeout <time in seconds> |
Menentukan durasi pembuatan profil dalam hitung detik. Gunakan nilai yang sedikit melebihi waktu mulai yang Anda amati untuk aplikasi GUI. Pada akhir periode waktu habis, data profil direkam meskipun aplikasi terus berjalan. Jika Anda tidak mengatur opsi ini, pembuatan profil akan berlanjut hingga aplikasi dimatikan, yang pada saat itu data akan direkam. |
-LeaveNativeImages |
Menegaskan bahwa gambar asli berinstrumen tidak boleh dihapus setelah menjalankan skenario. Opsi ini terutama digunakan saat Anda mendapatkan aplikasi yang Anda tentukan untuk skenario yang berjalan. Ini akan mencegah rekreasi gambar asli untuk menjalankan Mpgo.exe berikutnya. Ketika Anda telah selesai menjalankan aplikasi Anda, mungkin ada gambar asli tanpa sumber di cache jika Anda menentukan opsi ini. Dalam hal ini, jalankan Mpgo.exe dengan skenario dan daftar perakitan yang sama dan gunakan parameter –RemoveNativeImages untuk menghapus gambar asli ini. |
-RemoveNativeImages |
Membersihkan dari eksekusi di mana –LeaveNativeImages ditentukan. Jika Anda menentukan -RemoveNativeImages , Mpgo.exe mengabaikan argumen apa pun kecuali -64bit dan –AssemblyList , dan keluar setelah menghapus semua gambar asli berinstrumen. |
Keterangan
Anda dapat menggunakan –AssemblyList
dan - AssemblyListFile
beberapa kali pada baris perintah.
Jika Anda tidak menentukan nama jalur lengkap saat menentukan rakitan, Mpgo.exe melihat di direktori saat ini. Jika Anda menentukan jalur yang salah, Mpgo.exe menampilkan pesan kesalahan tetapi terus menghasilkan data untuk rakitan lain. Jika Anda menentukan rakitan yang tidak dimuat selama skenario pelatihan, tidak ada data pelatihan yang dihasilkan untuk perakitan tersebut.
Jika rakitan dalam daftar berada di cache rakitan global, rakitan tidak akan diperbarui untuk berisi informasi profil. Hapus dari cache rakitan global untuk mengumpulkan informasi profil.
Penggunaan Ngen.exe dan Mpgo.exe direkomendasikan hanya untuk aplikasi terkelola besar, karena manfaat gambar asli yang telah dikompilasikan biasanya hanya terlihat ketika menghilangkan kompilasi JIT yang signifikan pada durasi. Menjalankan Mpgo.exe pada aplikasi gaya "Halo Dunia" yang tidak bekerja secara intensif tidak akan memberikan manfaat apa pun, dan Mpgo.exe bahkan mungkin gagal mengumpulkan data profil.
Catatan
Ngen.exe dan Mpgo.exe tidak disarankan untuk aplikasi ASP.NET dan layanan Windows Communication Foundation (WCF).
Untuk Menggunakan Mpgo.exe
Gunakan komputer yang memiliki Visual Studio Ultimate 2012 dan aplikasi Anda terinstal.
Jalankan Mpgo.exe sebagai administrator dengan parameter yang diperlukan. Lihat bagian berikut untuk perintah sampel.
Rakitan bahasa perantara (IL) yang dioptimalkan dibuat di folder yang ditentukan oleh parameter
–OutDir
(dalam contoh, ini adalah folderC:\Optimized
).Ganti rakitan IL yang Anda gunakan untuk Ngen.exe dengan rakitan IL baru yang berisi informasi profil dari direktori yang ditentukan oleh
–OutDir
.Penyiapan aplikasi (menggunakan gambar yang disediakan oleh Mpgo.exe) akan menginstal gambar asli yang dioptimalkan.
Alur Kerja yang Disarankan
Buat sekumpulan rakitan IL yang dioptimalkan dengan menggunakan Mpgo.exe dengan parameter
–Scenario
.Periksa rakitan IL yang dioptimalkan ke dalam kontrol sumber.
Dalam proses build, panggil Mpgo.exe dengan parameter
–Import
sebagai langkah pasca-build untuk menghasilkan gambar IL yang dioptimalkan untuk diteruskan ke Ngen.exe.
Proses ini memastikan bahwa semua rakitan memiliki data pengoptimalan. Jika Anda memeriksa rakitan yang dioptimalkan yang diperbarui (langkah 1 dan 2) lebih sering, jumlah performa akan lebih konsisten di seluruh pengembangan produk.
Menggunakan Mpgo.exe dari Visual Studio
Anda dapat menjalankan Mpgo.exe dari Visual Studio (lihat artikel Cara: Menentukan Peristiwa Build (C#)) dengan batasan berikut:
Anda tidak dapat menggunakan jalur yang dikutip dengan tanda garis miring berikutnya, karena makro Visual Studio juga menggunakan tanda garis miring berikutnya secara default. (Misalnya,
–OutDir "C:\Output Folder\"
tidak valid.) Untuk mengatasi pembatasan ini, Anda dapat menghindari garis miring berikutnya. (Misalnya, gunakan-OutDir "$(OutDir)\"
sebagai gantinya.)Secara default, Mpgo.exe tidak ada di jalur build Visual Studio. Anda harus menambahkan jalur ke Visual Studio atau menentukan jalur lengkap pada baris perintah Mpgo. Anda dapat menggunakan parameter
–Scenario
atau–Import
dalam peristiwa pasca-build di Visual Studio. Namun, proses umumnya adalah menggunakan–Scenario
satu kali dari Perintah Pengembang untuk Visual Studio, lalu menggunakan–Import
untuk memperbarui rakitan yang dioptimalkan setelah setiap build; misalnya:"C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\"
.
Contoh
Perintah Mpgo.exe berikut dari Perintah Pengembang untuk Visual Studio mengoptimalkan aplikasi pajak:
mpgo –scenario "C:\MyApp\MyTax.exe /params par" –AssemblyList Mytax.dll MyTaxUtil2011.dll –OutDir C:\Optimized –TimeOut 15
Perintah Mpgo.exe berikut mengoptimalkan aplikasi suara:
mpgo –scenario "C:\MyApp\wav2wma.exe –input song1.wav –output song1.wma" –AssemblyList transcode.dll –OutDir C:\Optimized –TimeOut 15
Perintah Mpgo.exe berikut menggunakan data dari rakitan yang dioptimalkan sebelumnya untuk mengoptimalkan versi rakitan yang lebih baru:
mpgo.exe -import "C:\Optimized" -assemblylist "C:\MyApp\MyTax.dll" "C:\MyApp\MyTaxUtil2011.dll" -outdir C:\ReOptimized