[英]Optimization level in GCC for reducing executable size
我正在通过gcc学习优化。 从优化级别可以得出,在级别Os中,gcc特别选择了减小可执行文件大小所需的优化。 我写了简单的程序。
#include<stdio.h>
int main()
{
const int k=7;
printf("k = %d\n",k);
return 0;
}
并测试了所有级别。 它给我的尺寸如下
O0 - 4883
O1 - 4883
O2 - 4867
O3 -4867
Os - 4879
它的大小应最小为Os。 但是它没有这样做。 如果我错了,谁能告诉我。 谢谢
将优化级别视为编译器的指导风格,它们将永远不能保证最小或最快的可执行文件,但会以最适合您所追求的优化级别的方式构建代码。
0不会测试所有级别,然后选择最小的可执行文件,它只会使用倾向于较小可执行文件大小而不是例如更快执行速度的规则进行构建。
在程序中添加一些循环,以便为编译器提供更多选项,然后您可能会开始看到一些更重要的区别。 如果您真的想了解优化级别中的差异,那么请开始反汇编可执行文件,并查看编译器生成了哪些汇编代码并比较各种样式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.