![]() |
1
12
它通过放置额外的代码来计算每个代码路径被占用的次数。当您第二次编译时,编译器使用关于程序执行的所获得的知识,而这些知识以前只能猜测到。PGO可以朝以下几个方面努力:
在你测试它之前,你永远不知道这些东西能有多大帮助。 |
![]() |
2
6
在编译X264时,PGO提供了大约5%的速度提升,我在这个项目上工作,并且我们有一个内置的系统(make fprofiled)。在某些情况下,这是一个很好的免费速度提升,并且可能对那些不像X264那样由手写程序集组成的应用程序有更多帮助。 |
![]() |
3
4
杰森的建议是正确的。你将得到的最好的加速来自“发现”你让一个O(N 二 )算法会在某个地方陷入一个内部循环,或者您可以在昂贵的函数之外缓存某些计算。 与PGO可以触发的微观优化相比,这些都是最大的赢家。一旦您完成了这一级别的优化,PGO可能会有所帮助。不过,我们从未有过多少运气——仪器的成本如此之高,以至于我们的应用程序变得异常缓慢(达到了几个数量级)。 我喜欢使用“英特尔vtune”作为分析器,主要是因为它与检测性能变化过大的分析器相比是无创的。 |
![]() |
4
2
有关优化的有趣之处在于,在最不可能实现速度提升的地方。 这也是你需要一个分析器的原因,而不是猜测速度问题在哪里。
我建议从剖析器开始(
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 5 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 5 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 5 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |