GCC的优化效果测试:2
记得很久以前,有这么一道题:计算从1到100的和。
这道题一般是用来作为普通编程教学的循环这部分的内容的引导,同时用来作为计算机可以“重复进行计算”的证明。
一般的循环解法很直白:
.file"test1.c".section.rodata.str1.1,"aMS",@progbits,1.LC0:.string"%d\n".text.p2align 4,,15.globl main.typemain, @functionmain:pushl%ebpmovl%esp, %ebpandl$-16, %espsubl$16, %espmovl$5050, 4(%esp)movl$.LC0, (%esp)callprintfxorl%eax, %eaxleaveret.sizemain, .-main.ident"GCC: (Debian 4.4.5-8) 4.4.5".section.note.GNU-stack,"",@progbits
从这里可以得到一个教训,如果你确定一个函数只被一个文件使用而不是作为接口,那么应该明确定义为static以帮助编译器进行更好的优化。因为是否会被别的文件使用这也是不确定的信息。