我可以选择比较操作的类型,请将它们按照处理器的效率顺序排列,从最高效的开始:
if (x == 1)
if (x != 0)
if (x < 2)
if (x <= 3)
我经常遇到这样的情况:我可以使用我选择的任何一个来获得相同的结果......
这是我一直想知道的事情,可能其他一些人也想知道。另外,对于不同的编程语言它是否有所不同?
编辑:感谢您提供的信息。因为它们显然具有相同的效率,这意味着我可以使用更多 > 或 < 类型运算符,以便更好地捕获故障!
最佳答案
通常,它们中的任何一个都比其他的更有效率。这是因为在大多数 CPU 上,它们映射到专用操作码,其执行由完全相同的物理单元处理,但配置略有不同。使用不存在但非常容易理解的汇编语法,每个分支(if
条件)可能会转换为:
if (x == 1)
test = x - 1
branch_equal_zero test
if (x != 0)
test = 0
branch_non_equal_zero test
if (x < 2)
test = x - 2
branch_lower_than_zero test
if (x <= 3)
test = x - 3
branch_lower_or_equal_to_zero test
正如您所看到的,与零进行比较(无论比较如何)可能会更快,因为不涉及减法 - 但更快可能 仅在极重负载下才注意到它。
即使我们谈论的是解释性语言(PHP 和 JS),答案也不会改变,因为所有运算符都由解释器直接映射到底层的 native 比较。更不用说可能发生的任何类型转换或中间转换了。
关于javascript - 哪些比较运算符的处理器效率更高 : <, <=、!= 或 ==?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21073836/