【发布时间】:2016-01-01 15:39:54
【问题描述】:
我关注的是 GCC 编译程序的 CPU/内存消耗。
执行用O3编译的代码,总是那么贪心吗?
有没有科学的参考或规范可以说明不同级别的Mem/cpu消耗差异?
研究这个问题的人经常关注这些优化对执行时间、编译代码大小和能量的影响。但是,我找不到太多关于资源消耗的工作(通过启用优化)。
提前致谢。
【问题讨论】:
-
"有没有科学的参考或规范表明不同级别的Mem/cpu消耗的差异?"我的建议是在您自己的代码上对其进行测试,看看会发生什么。正如@BasileStarynkevitch 所说,03 优化并不一定意味着性能将优于 02。由于
-fpredictive-commoning标志,03 存在并发问题(如果执行不正确)。此外,优化程度越高,GCC 遵循的规则就越严格,如果代码以某种方式依赖于未定义的行为,则更容易暴露关键错误。 -
我看到的 GCC 和其他一些编译器的问题是它们严格由源代码决定。我知道的一个 TI 编译器可以生成人类可读的关于性能限制因素的反馈消息,如寄存器或 ALU 使用、结构不良的循环控制,并帮助程序员相应地调整源。优化优化设置不是真正的优化。优化就是找出需要花费太多时间的事情并采取相应措施。
-
MILEPOST 项目做了一些非常相关的事情......
-
我还是不明白你的意思。你住在哪个国家?您是否有资源(例如 50 万欧元或美元)来实现您的目标?如果您住在欧洲,也许您的想法或愿望可能会成为某些协作研发项目的一部分(例如 H2020、ITEA ......)。如果是这样,请通过电子邮件与我联系...
-
但是您没有定义什么是内存消耗:动态堆栈大小、堆要求、缓存未命中、代码大小?
标签: gcc optimization compilation performance-testing compiler-optimization