A fundamental difference is that PGO requires a training run, and after that the code is static. A more dynamic system, like Dynamo, will rebuild the code as usage changes. Somewhat similar to rebuilding with PGO with a new training dataset, but on the fly.