参考手册:
说明:本系列文章为个人笔记,如有不正确之处,请参考官方相关文档,如果错误发现,我会尽量更新修改。另外,以下内容不保证对于所有版本的编译器都正确,编译器的实现也可能有一些变化之处,具体参考官方文档。
更多说明请参考http://blog.csdn.net/gengshenghong/article/details/7034748中补充说明部分。
(1) PGO与分支预测的简单理解
PGO在性能提升方面,一个能工作很好的情况是代码有频繁执行的分支,而且分支在编译时难以预测。一个最常见的例子,就是错误处理的代码,一般而言,错误处理是为了防止代码出错,所以大部分的错误处理的分支,可能在大部分时候都是false。
为了理解这个问题,我以switch分支举例的代码片段如下:
void processError(int retcode)
{
switch(retcode)
{
case 0:
pr