PGO oder nicht PGO, das ist das Dilemma. Schritt 2
PGO or not PGO this is the dilemma. Step 2
PGO ist ein zweistufiger Build: Zuerst wird der Code instrumentiert, um die Häufigkeit jeder Verzweigung und jedes Aufrufs zu erfassen. Dann optimiert der Compiler anhand dieser Daten Inlining, Branch-Layout, Hot/Cold-Splitting und die Anordnung des gesamten Binaries. Entscheidend ist die Form des Kontrollflusses, nicht die konkreten Daten – deshalb funktioniert ein Training mit MTR, obwohl es andere Queries als eine TPCC-Last ausführt.
Entscheidend ist nicht, dass PGO die trainierte Workload schnell macht, sondern dass der Compiler erfährt, welcher Code heiß und welcher kalt ist, und das gesamte Binary entsprechend umformen kann.