我最近正在读一本书,里边说道 if (a < 901)
比 if (a <= 901)
执行地要快。这是真的么?
首先,这个观点在大多数平台上是错的。
我们可以来看下两者的汇编。
if (a < b) {
// Do something 1
}
=>
mov eax, DWORD PTR [esp+24] ; a
cmp eax, DWORD PTR [esp+28] ; b
jge .L2 ; jump if a is >= b
; Do something 1
.L2:
if (a <= b) {
// Do something 2
}
=>
mov eax, DWORD PTR [esp+24] ; a
cmp eax, DWORD PTR [esp+28] ; b
jg .L5 ; jump if a is > b
; Do something 2
.L5:
两者只有 jge
和 jg
指令是不同的,而两个指令的效率并没有什么差别。