sta*_*icx 4 memory gcc cpu-usage compiler-optimization
有没有办法使用选项标志在 cpu 和内存方面优化 GCC 编译代码?使用 O3 而不是 01 会增加还是减少内存或 CPU 使用量?
关于内存使用:
\n-Os减少程序的二进制大小。它对运行时内存使用的影响有限(C/C++ 内存分配和释放是“手动”的)。
我说有限是因为尾递归优化可以降低堆栈使用率(此优化也将使用-O2/执行-O3)。
-flto(链接时间优化)选项还可以降低二进制大小。
CPU使用率:
\n高度优化的代码(例如-O3)会给CPU带来压力,但这并不自动意味着更高的CPU总功耗(它可能会导致最短的执行时间)。
例如,在 基于编译器的优化对嵌入式软件功耗的影响(严格来说与 GCC 不相关,但很有趣)中,他们 \xef\xac\x81nd 启用各种全局速度编译器优化会导致 DSP 功耗的显着增加(平均而言, 25%)。尽管这些优化增加了 DSP 的功耗,但运行算法时的能耗平均降低了 95%
\n配置文件引导优化可以降低 CPU 消耗(在生产环境中使用 PGO(配置文件引导优化)的风险)。
\n也许您应该使用-O2它并且不用担心:如果您希望节省电量/内存,应用程序的整体设计将比编译器开关更有效。