我正在读一本书,作者说if( a < 901 )
比if( a <= 900 )
快。
不完全是这个简单的例子,但在循环的复杂代码上有轻微的性能变化。我想这与生成的机器代码有关,万一它是真的呢。
不,它在大多数架构上不会更快。你没有说明,但在x86上,所有的积分比较通常是用两条机器指令实现的:
test
或cmp
指令,设置EFLAGS
。Jcc
(跳转)指令][1],取决于比较类型(和代码布局):jne
- 如果不相等则跳转 --> ZF = 0
.jz
- 如果为零(相等)则跳转 --> ZF = 1
.jg'- 如果较大则跳转 -->
ZF = 0 and SF = OF`。例子 (为了简洁而编辑) 用$ gcc -m32 -S -masm=intel test.c
编译。
if (a < b) {
// Do something 1
}
编译为: