这两个比较运算符运算速度有差别么

2022-02-11 08:37:21 浏览数 (1)

问题

我最近正在读一本书,里边说道 if (a < 901)if (a <= 901) 执行地要快。这是真的么?

回答

首先,这个观点在大多数平台上是错的。

我们可以来看下两者的汇编。

代码语言:javascript复制
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:
代码语言:javascript复制
   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 指令是不同的,而两个指令的效率并没有什么差别。

0 人点赞