Skip to content

Latest commit

 

History

History
41 lines (29 loc) · 875 Bytes

029 - 这两个比较运算符运算速度有差别么.md

File metadata and controls

41 lines (29 loc) · 875 Bytes

https://stackoverflow.com/questions/12135518/is-faster-than

问题

我最近正在读一本书,里边说道 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:

两者只有 jgejg 指令是不同的,而两个指令的效率并没有什么差别。