Was Sie auf Ihrem Computer tun, während die PGO-Messungen durchgeführt werden, sollte keinerlei Auswirkungen auf das Ergebnis der Optimierung haben. Was PGO tun ist, Messungen zu verwenden, um die heißen Pfade in dem Code für einen gegebenen Datensatz zu finden und diese Information zu verwenden, um das Programm so schnell wie möglich für diesen Datensatz zu machen und welcher Pfad heiß ist und welcher nicht unabhängig von anderen Programmen ist auf dem Computer laufen.
Um die Dinge ein wenig zu erklären, gibt es bei der Code-Optimierung Kompromisse. Die Verbesserung wird in einigen Teilen des Codes höher und in anderen niedriger sein, abhängig davon, welche Code-Transformationen verwendet werden und wo sie angewendet werden. Um ein besseres Endergebnis zu erzielen, benötigen Sie hohe Verbesserungen im Code, der häufig ausgeführt wird (Hot-Code im Compiler-Jargon), während Sie mit kleineren Verbesserungen im Code leben können, der seltener ausgeführt wird (Cold-Code). Normalerweise wird eine Reihe von Heuristiken verwendet, um diese heißen Teile des Programms zu identifizieren und Optimierungen so anzuwenden, dass diese Teile so schnell wie möglich gemacht werden. Das Problem bei diesem Ansatz besteht darin, dass die Heuristiken nichts darüber wissen, wie das Programm in der Praxis verwendet wird, und heißen Code möglicherweise als kalt identifizieren.
Die profilgeführte Optimierung (PGO) ist eine Methode, die dem Compiler hilft, die heißen Teile des Codes mithilfe von Daten aus realen Ausführungen zu lokalisieren. Als ersten Schritt weisen Sie den Compiler an, eine instrumentierte Version des Programms zu erstellen, um zu messen, wie der Code in der Praxis ausgeführt wird. Dazu werden normalerweise Zähler hinzugefügt, um die Anzahl der Iterationen in Schleifen zu zählen und welcher Zweig in if-Anweisungen ausgewählt wird. Der zweite Schritt besteht darin, das instrumentierte Programm mit realen Daten auszuführen. Am Ende der Ausführung gibt das Programm die Werte aller hinzugefügten Zähler aus, und durch das Vergleichen der Zähler mit dem Code kann man sehen, welche Teile des Programms heiß (hohe Zahlen) und welche kalt (niedrige Zahlen) sind. Abschließend wird das Programm kompiliert, diesmal jedoch mit dem Programmprofil versehen. Dies bedeutet, dass der Compiler nicht mehr raten muss, welche Teile schneller sein sollten und welche langsamer sein könnten, um im Profil nachzuschlagen.
Doom ist in Ordnung, wird nicht viel CPU essen :) –
Im Zweifel, besser sicher als Nachsicht: Spielen Sie auf Ihrem anderen Computer –
Haben Sie es und finden Sie es heraus. ;-) –