【问题标题】:Bitwise operations' significance in javascript [duplicate]按位运算在javascript中的意义[重复]
【发布时间】:2012-01-31 06:28:38
【问题描述】:

可能重复:
Where would I use a bitwise operator in JavaScript?

c/c++ 按位运算比普通(算术)运算更快(至少在低性能处理器中显着)。 js 也一样吗?我不认为它在 c 中更快的原因是按位操作是硬连线的,通常在 1 个处理器周期内完成。但是js 在没有任何此类硬件(我的意思是寄存器)访问权限的浏览器中运行。我不确定(大约 70% 肯定:))。位运算符的典型(或更智能)用途是什么(特别是在js,但我也想知道其他人)。如果我在任何地方错了,请纠正我。

【问题讨论】:

    标签: javascript bitwise-operators


    【解决方案1】:

    在某些情况下,某些位运算符比算术运算符更快。 Javascript 很难优化,因为性能在浏览器、平台和计算机模型之间存在很大差异。

    现代浏览器将 Javascript 代码编译为原生代码,因此关于编译语言的一些说法也与 Javascript 相关。然而,一些关于编译语言的说法随着新的处理器变得越来越不准确。例如,不再关注单个处理器操作的性能,因为操作是并行运行的。您不再看一个操作需要多少个周期,而是看一个周期可以执行多少个操作。

    要确定特定操作在 Javascript 中是比另一个更快还是更慢,您必须在各种计算机和浏览器上对其进行测试,并查看平均值、最佳情况和最差情况。即便如此,您获得的任何特定结果对于每个发布的新浏览器版本都会变得越来越过时。

    【讨论】:

    • 谢谢,+1 很好的解释。
    【解决方案2】:

    JS 中的位运算符很慢。与 C 相比确实很慢。原因是在 JS 中,所有数字都表示为双精度浮点数,因此要执行按位运算,运行时必须将它们转换为 32 位整数并返回。

    这并不是说它们没有用。例如,Node#compareDocumentPosition 返回一个位掩码,something.length >>> 0 是获取something 的长度属性的常用方法,如果length 不是数字或者是NaN,则为0。此外,假设ab >= 0,a / b | 0 是实现Math.floor(a / b) 的快速方法。

    【讨论】:

    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多