Javascript 哪些比较运算符的处理器效率更高:<<;=,!=或者==?

Javascript 哪些比较运算符的处理器效率更高:<<;=,!=或者==?,javascript,php,performance,operators,Javascript,Php,Performance,Operators,我可以选择比较操作的类型,请按照处理器的效率顺序从最高效的开始: if (x == 1) if (x != 0) if (x < 2) if (x <= 3) if(x==1) 如果(x!=0) if(x

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

if (x == 1)

if (x != 0)

if (x < 2)

if (x <= 3)
if(x==1)
如果(x!=0)
if(x<2)
如果(x简单的答案是“它们都一样”,因为在基本层面上,它们都是一样的。而且,它们都非常快,你无论如何都不会注意到差异

我可以看出其中一个可能比另一个更快—CPU倾向于重新排序指令和预测分支—因此在特定情况下可能会有所不同

但是,如果这些情况适用于您在JavaScript中所做的任何事情,则不适用。在JavaScript中,您可以非常肯定它们都是相同的。

简单的答案是“它们都是相同的”,因为在基本级别上,它们都是相同的。而且,它们都非常快,您无论如何都不会注意到差异

我可以看出其中一个可能比另一个更快—CPU倾向于重新排序指令和预测分支—因此在特定情况下可能会有所不同


但是,如果这些情况适用于您在JavaScript中所做的任何事情,则不适用。在JavaScript中,您可以非常确定它们都是相同的。

通常,它们中的任何一个都比其他的更有效。这是因为在大多数CPU上,它们映射到专门的操作码,其执行由相同的物理单元以稍微不同的配置来处理使用不存在但易于理解的汇编语法,每个分支(
if
condition)可能会转换为:

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
if(x==1)
测试=x-1
分支等于零测试
如果(x!=0)
测试=0
分支非等零测试
if(x<2)
测试=x-2
分支低于零测试

if(x通常,它们中的任何一个都比其他的更有效。这是因为在大多数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
if(x==1)
测试=x-1
分支等于零测试
如果(x!=0)
测试=0
分支非等零测试
if(x<2)
测试=x-2
分支低于零测试

如果(x让我们换一种说法,从更高的层次开始。 Javascript和PHP,它们都是高级语言,因此不会直接使用CPU,而是通过许多进程来优化您编写的内容。在Javascript中,“进程”被称为Javascript引擎。在PHP中,它是解释器本身。请不要误解我,他们被认为会在工作中留下“一点”注意优化

因此,最终优化这种操作的真正方法是在PHP或Javascript引擎本身中找到一个真正的大问题


现在让我们来看看这些操作的最低方面。现代CPU的时钟速度为3.2GHz(甚至更高)。因此,这意味着每秒有32000000次操作,这是一个巨大的数字。假设这些操作(最终几乎都是相同的)使用2或3个刻度。大约需要10^9个操作员才能注意到显著的差异。

让我们换一种说法,从更高的级别开始。 Javascript和PHP,它们都是高级语言,因此不会直接使用CPU,而是通过许多进程来优化您编写的内容。在Javascript中,“进程”被称为Javascript引擎。在PHP中,它是解释器本身。请不要误解我,他们被认为会在工作中留下“一点”注意优化

因此,最终优化这种操作的真正方法是在PHP或Javascript引擎本身中找到一个真正的大问题


现在让我们来看看这些操作的最低方面。现代CPU的时钟速度为3.2GHz(甚至更高)。因此,这意味着每秒有32000000次操作,这是一个巨大的数字。假设这些操作(最终几乎都是相同的)使用2或3个刻度。大约需要10^9个操作员才能注意到显著的差异。

听说过过早优化吗?你的问题将有资格获得这一类别的奖励……它们都是一条处理器指令。没有区别。@RobW我知道你在说什么,但考虑到我可以使用其中任何一条,并且需要同样的努力t输入其中任何一个肯定属于“迂腐的编程风格”,而不是过早的优化:)使用对您的代码读者最有意义的一种。为什么要在微优化上浪费时间。如果您如此关心性能,请选择一种编译语言。您是否听说过过早优化?您的问题将有资格获得这一类别的奖项……它们都是一条处理器指令。没有区别。@RobW我知道您是什么。@aying,但鉴于我可以使用其中任何一种,输入其中任何一种都需要同样的努力,这肯定属于“学究式编程风格”,而不是过早优化:)使用对您的代码读者最有意义的语言。为什么要在微观优化上浪费时间。如果您如此关注性能,请选择一种有趣的编译语言,因为我一直怀疑<类型运算符稍微慢一点。但这就是微观优化。没有什么值得profilin付出努力的g和checking.很有趣,因为我一直怀疑<类型运算符稍微慢一点。但这是一个微优化,我只是想知道。没有什么值得分析和检查的工作。它只是不符合示例:)它只是不符合示例:)