是`

Linda Hamilton
Linda Hamilton原創
2024-12-22 18:29:14189瀏覽

Is `

在使用比較運算子

的典型if 語句中更快或

機器碼產生

    在大多數架構(包括x86)上,積分比較採用以下機器指令:
  • 修改EFLAGS 暫存器的測試或cmp 指令
跳轉指令(Jcc)基於比較類型

跳轉指令包括jne(不等於則跳轉)、jz(零則跳轉)、jg(大於則跳轉)等。

範例程式碼

if (a < b) {
    // Do something 1
}
考慮以下內容例如:

if (a <= b) {
    // Do something 2
}

if (a < b)
mov eax, [a]
cmp eax, [b]
jge .L2
// Do something 1

if (a <= b)
mov eax, [a]
cmp eax, [b]
jg .L5
// Do something 2
比較器產生的彙編程式碼,我們看到所使用的跳躍指令之間的差異:jge 與jg。

因此,機器碼中唯一的差異是跳轉指令,表示比較本身需要相同數量的

浮點

相同的原理適用於x87 浮點比較。編譯器為兩者產生相同數量的指令。和

結論

儘管運算符數量存在差異(

以上是是`的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn