有没有办法使用选项标志在cpu和内存方面对GCC编译的代码进行优化?使用O3而不是01会增加还是减少内存或cpu的使用率?
发布于 2015-06-16 00:17:30
关于内存使用情况:
-Os减小了程序的二进制大小。它对运行时内存使用有有限的影响(C/C++内存分配和释放是“手动”的)。我说是有限的,因为tail recursion optimization可以降低堆栈使用率(这种优化也将通过-O2 / -O3).
-flto (link time optimization)选项来执行,也可以降低二进制文件的大小。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).
a look (The risks of using PGO (profile-guided optimization) with production environment).
也许你应该使用-O2,不用担心:如果你想节省能源/内存,你的应用程序的整体设计将比编译器开关产生更大的影响。
发布于 2015-06-15 23:50:45
您可以尝试类似于-O2 (良好的CPU速度)的-Os,同时尝试减小二进制文件的大小。
查看各种优化here。
发布于 2015-06-16 04:54:38
代码大小优化如上所述。
我只关注CPU优化。您可以编写处理器利用率很低的非常好的/优化的代码,以及最大限度地提高CPU利用率的非常糟糕/未优化的代码。
那么你如何最有效地使用你的处理器呢?
祝好运。
https://stackoverflow.com/questions/30848823
复制相似问题