查看优化级别大于0时的汇编代码
gcc -O1 -S test.c
- foo:
- pushl %ebp
- xorl %eax, %eax
- movl %esp, %ebp
- cmpl $9, 8(%ebp)
- popl %ebp
- setg %al
- decl %eax
- andl $-100, %eax
- addl $200, %eax
- ret
这段汇编代码类似于下面这段代码, (实际上 三元运算符 ? : 还是条件判断,这里只是用来表达 ‘不用跳转’这个意思):
优化之后,少了条件判断,程序无须跳转,这样流水线不用被清空,程序效率就提高了.