javascript - 哪些比较运算符的处理器效率更高 : <, <=、!= 或 ==?

标签 javascript php performance operators

我可以选择比较操作的类型,请将它们按照处理器的效率顺序排列,从最高效的开始:

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/

相关文章:

c - 使用 USB2 连接的 ext2 卷改善小文件读取时间

java - 包含处于 RUNNABLE 状态且没有堆栈的线程的线程转储

C# - ADO.NET 的一些高性能最佳实践/技巧是什么

javascript - 在 chrome 中刷新没有树 'flashing' 的 jstree

javascript - JWPlayer 7错误 "cannot load m3u8 crossdomain access denied"chrome仅win 10

php - 有什么方法可以更快地提取字符串?

php - 使用 PHP 拆分逗号分隔的名称

javascript - WebView 出现问题,加载时卡住

javascript - 单击时隐藏标题下拉

javascript - 获取自定义 jQuery 插件函数列表