c++ - C/C++编译器反馈优化

标签 c++ c optimization gcc compiler-construction

有没有人看到过不同程序的真实世界数字,这些程序使用 C/C++ 编译器提供的反馈优化来支持分支预测、缓存预加载功能等。

我搜索了它,令人惊讶的是,甚至流行的解释器开发组似乎都没有检查过效果。并且将 ruby​​、python、php 等性能提高 10% 左右应该被认为是有用的。

真的没有任何好处还是整个开发者社区只是懒得使用它?

最佳答案

10% 是一个很好的大概数字。也就是说,...

您必须真正关心性能才能走这条路。我从事的产品 (DB2) 使用 PGO 和其他侵入式和积极的优化。这些成本包括大量构建时间(在某些平台上是三倍)以及开发和支持噩梦。

当出现问题时,将优化代码中的错误位置映射回源代码可能并非易事。开发人员通常不会期望不同模块中的函数最终可以合并和内联,而这会产生“有趣”的效果。

指针别名问题很难追踪,通常也会出现在这些优化中。您拥有非确定性构建的额外乐趣(别名问题可能会出现在周一的构建中,直到周四再次消失,...)。

在这些激进的优化下,正确或不正确的编译器行为之间的界限也变得相当模糊。即使有我们内部的编译器人员(字面上)的奢侈,优化问题(在我们的源代码或编译器中)仍然不容易理解和解决。

关于c++ - C/C++编译器反馈优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1673844/

相关文章:

c++ - 如何从 const float* 中获取 C++ vector

c++ - 即使在显式调用析构函数后自动销毁对象

谁能解释以下程序扫描值的输出..?

c - 矩阵和 vector 乘法优化算法

c# - LINQ优化问题

javascript - 如何将模块中的选定函数作为 ES2015 中的对象导入?

使用函数指针的 C++ 递归遍历

c++ - C++中的整数提升和整数转换有什么区别

c - 如何计算数组的最小值、最大值、平均值?

c - 基准测试功能