Is there a way to optimize the GCC compiled code in term of cpu and memory using option flags? Using O3 rather than 01 does increase or decrease the amount of memory or cpu usage?
答案 0 :(得分:3)
关于内存使用情况:
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user') # To get request.user. Do not use kwargs.pop('user', None) due to potential security hole
super(MyForm, self).__init__(*args, **kwargs)
# If the user does not belong to a certain group, remove the field
if not self.user.groups.filter(name__iexact='mygroup').exists():
del self.fields['confidential']
减少了程序的二进制大小。它对运行时内存使用有很强的限制影响(C / C ++内存分配和释放是“手动”)。
我说有限,因为https://www.newlink.org/doc/?doc=可以降低堆栈使用率(此优化也将使用-Os
/ -O2
执行。)
-O3
(tail recursion optimization)选项也可以降低二进制文件大小。
CPU使用率:
高度优化的代码(例如-flto
)会给CPU带来压力,但这并不意味着更高的CPU总功耗(可能会导致最短的执行时间)。
E.g。在link time optimization(并非严格的GCC相关但有趣)中,他们发现启用各种全局速度编译器优化会导致DSP的功耗大幅增加(平均增加25%)。虽然这些优化增加了DSP的消耗功率,但运行算法时的能耗平均降低了95%
配置文件引导优化可以降低CPU消耗(Compiler-Based Optimizations Impact on Embedded Software Power Consumption)。
可能你应该使用-O3
并且不用担心:如果你想节省电量/内存,你的应用程序的整体设计将比编译器开关更有效。
答案 1 :(得分:1)
您可以尝试使用-Os
-O2
(良好的CPU速度),同时尝试减少二进制文件大小。
查看各种优化here。
答案 2 :(得分:0)
上面解决了代码大小优化问题。
我只关注CPU优化。您可以编写具有低处理器利用率的非常好/优化的代码,以及最大化CPU利用率的非常糟糕/未优化的代码。
那么你如何最有效地使用你的处理器?