PGO: la compilación en dos pasadas que reordena todo el binario
PGO or not PGO this is the dilemma. Step 2
PGO no se trata de hacer rápido el workload de entrenamiento, sino de decirle al compilador qué código es caliente y qué código es frío para que reestructure el binario. La primera pasada instrumenta cada arista del grafo de control de flujo; la segunda usa esos conteos para inlining, disposición de ramas, división hot/cold, reordenamiento de funciones y promoción de llamadas indirectas. La clave: solo importa la forma del flujo de control, no los valores.
PGO no se trata de “hacer rápido el workload de entrenamiento”, se trata de “decirle al compilador qué código es caliente y qué código es frío, y dejar que reestructure todo el binario en consecuencia”.