最近一直在寻找PGO的相关话题,开始想知道它们是如何应用到源代码中的,并且已经应用了一个又一个的应用效果。
我的意思是,如果您在 GCC 或 CLang 中启用 PGO 优化,例如,它将应用所有优化(内联、虚拟调用推测、死代码分离等),对吧!?
即使它们都没有应用于源代码,让我们假设其中一些是。那么,我猜它们是按顺序应用的,对吧?
那么,他们能否将 CFG(控制流图)修改为一些基本块频率丢失的程度?
例如,如果在名为“A”的 PGO 之后应用了名为“B”的 PGO,并且“A”修改了源代码,导致丢失了一些 Basic Blocks 频率,那么“B”如何应用(假设两者都是 PGO这取决于BB频率)?
(对不起,我的英语不好)