首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC对CPU和内存使用的优化

GCC对CPU和内存使用的优化
EN

Stack Overflow用户
提问于 2015-06-15 23:16:18
回答 3查看 2.7K关注 0票数 3

有没有办法使用选项标志在cpu和内存方面对GCC编译的代码进行优化?使用O3而不是01会增加还是减少内存或cpu的使用率?

EN

回答 3

Stack Overflow用户

发布于 2015-06-16 00:17:30

关于内存使用情况:

  • -Os减小了程序的二进制大小。它对运行时内存使用有有限的影响(C/C++内存分配和释放是“手动”的)。

我说是有限的,因为tail recursion optimization可以降低堆栈使用率(这种优化也将通过-O2 / -O3).

CPU使用率:

  • 高度优化的代码(例如-O3)会给CPU带来压力,但这并不意味着更高的总CPU功耗(它可能会导致最短的执行时间)。

例如,在Compiler-Based Optimizations Impact on Embedded Software Power Consumption (严格意义上与GCC无关,但很有趣)中,他们发现启用各种全局速度编译器优化会导致Compiler-Based Optimizations Impact on Embedded Software Power Consumption功耗的显著增加(平均增加25%)。虽然这些优化增加了DSP的功耗,但在运行算法时的能耗平均减少了95%cpu配置文件引导优化可以降低(The risks of using PGO (profile-guided optimization) with production environment).

  • Take消耗

a look (The risks of using PGO (profile-guided optimization) with production environment).

也许你应该使用-O2,不用担心:如果你想节省能源/内存,你的应用程序的整体设计将比编译器开关产生更大的影响。

票数 3
EN

Stack Overflow用户

发布于 2015-06-15 23:50:45

您可以尝试类似于-O2 (良好的CPU速度)的-Os,同时尝试减小二进制文件的大小。

查看各种优化here

票数 1
EN

Stack Overflow用户

发布于 2015-06-16 04:54:38

代码大小优化如上所述。

我只关注CPU优化。您可以编写处理器利用率很低的非常好的/优化的代码,以及最大限度地提高CPU利用率的非常糟糕/未优化的代码。

那么你如何最有效地使用你的处理器呢?

  1. 首先,使用一个好的优化编译器。我不会和GCC说话,但英特尔和其他一些购买的编译器(例如PGI)非常擅长optimization.
  2. Exploit底层硬件,如向量指令、FMA、寄存器等。
  3. 遵循使用外围设备的最佳实践,如蜂窝、wifi、全球定位系统等。
  4. 遵循软件设计的最佳实践,如延迟隐藏,通过使用中断避免轮询,适当时使用线程池,等等

祝好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30848823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档