Sie sind hier: Wissen
Begriff Managed Profile Guided Optimization
Abkürzung MPGO
Eintrag zuletzt aktualisiert am 12.11.2024

 Zur Stichwortliste unseres Lexikons

Was ist Managed Profile Guided Optimization ?

Managed Profile Guided Optimization (PGO) analysiert das Verhalten von Anwendungen (insbesondere die Reihenfolge der Nutzung von Programmteilen) und optimiert daraufhin den Compiler, sodass der beim Programmstart benötigte Programmcode bevorzugt übersetzt wird und die Anwendung
schneller startet.

Managed Profile Guided Optimization (MPGO) ist eine Variante des allgemeinen PGA-Verfahren für .NET und für den Just-in-Time-Compiler.

Microsoft verwendet für die Erstellung der Native Images der .NET Framework Assemblies schon länger einen Optimierungsprozess, der die Reihenfolge des Programmcodes im Native Image an die tatsächliche Verwendung des Programmcodes anpasst. Diese Managed Profile Guided Optimization (MPGO) ist ab .NET 4.5 auch für selbstgeschriebene Assemblies in Form des Werkzeugs mpgo.exe in Visual Studio Ultimate verfügbar.
Zunächst zeichnet man mit dem Werkzeug Nutzungsdaten einer Anwendung auf:

MPGO -scenario Anwendung.exe -AssembyList meineBibliothek.dll -OutDir C:\temp\Ausgabe\

Nach dem Start der Anwendung sollte eine Reihe repräsentativer Benutzungsszenarien in der Anwendung durchlaufen.
Anschließend muss man die DLL noch mit dem Native Image Generator (ngen.exe) zu einem Native Image verwandeln und im Native Image Cache (einem Teil des GAC) installieren:

ngen.exe install C:\temp\Ausgabe\meineBibliothek.dll

Hinweis: Managed Profile Guided Optimization (MPGO) darf nicht mit der Parallel JIT Compilation (alias Multi-Core-JIT – MCJ) verwechselt werden. MCJ beschleunigt Anwendungen, die in Intermediate Langu-age vorliegen. MPGO beschleunigt Native Images. Native Images an sich sind tendentiell schneller als Intermediate Language-Assemblies. Daher sollte MPGO in der Regel zu einem besseren Ergebnis führen also MCJ.

Achtung: Microsoft schreibt in der Dokumentation (http://msdn.microsoft.com/de-de/library/hh873180(v=vs.110).aspx), dass Ngen.exe und Mpgo.exe für IIS-basierte Serveranwendungen (ASP.NET und WCF) nicht empfohlen sind. Mpgo.exe ist zudem nicht möglich für Windows 8-Metro-Apps

PGO im modernen .NET (.NET Core)

Ab Version 1.1 verwendet Microsoft PGO auch für die .NET Core Runtime-Assemblies.
Verbesserungen in .NET 6.0: https://devblogs.microsoft.com/dotnet/conversation-about-pgo/
Standard ab .NET 8.0: https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-5/#codegen

Beratung & Support

Schulungen zu diesem Thema

 Anfrage für eine individuelle Schulung zum Thema Managed Profile Guided Optimization MPGO  Gesamter Schulungsthemenkatalog