按位运算在javascript中的重要性

时间:2012-01-31 06:28:38

标签: javascript bitwise-operators

  

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

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

2 个答案:

答案 0 :(得分:3)

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

现代浏览器将Javascript代码编译为本机代码,因此有关编译语言的一些内容也与Javascript相关。但是,对于较新的处理器,有些关于编译语言的内容越来越不准确。例如,由于操作并行运行,因此不再需要查看单个处理器操作的性能。您不会查看操作所需的循环次数,而是循环中可以执行的操作数。

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

答案 1 :(得分:3)

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

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