是`

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