GCC配置文件引导优化(PGO)收集哪些信息以及哪些优化使用它?

Joh*_*ugo 39 c++ gcc lto pgo

我启用时GCC会收集哪些信息-fprofile-generate,哪些优化确实使用了收集的信息(设置-fprofile-use标志时)?

我需要引用这里.我已经搜索了一段时间,但没有找到任何记录.

有关链接时间优化(LTO)的信息将是一个加号!= d

chi*_*ill 39

-fprofile-generate启用-fprofile-arcs,-fprofile-values-fvpt.

-fprofile-use使-fbranch-probabilities,-fvpt,-funroll-loops,-fpeel-loops-ftracer

资料来源:http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Optimize-Options.html#Optimize-Options

PS.有关LTO的信息也在该页面上.


Mic*_*ser 14

Ulrich Drepper撰写的"每位程序员应该了解的记忆" https://people.freebsd.org/~lstewart/articles/cpumemory.pdf http://www.akkadia.org/drepper/cpumemory.pdf

在第7.4节中

  • 使用--profile-generate进行编译会为每个目标文件生成.gcno文件.(与gcov覆盖率报告相同的文件)
  • 然后你必须运行一些测试,在运行时它将覆盖数据记录到.gcda文件中
  • 使用--profile-use重新编译:它将收集覆盖数据并推断是否可能存在分支(__builtin_expect(..,1)或不太可能(__builtin_expect(..,0)

结果应该运行得更快,因为它应该更好地将代码预取到处理器指令缓存中.