【发布时间】:2015-02-01 05:19:44
【问题描述】:
与许多其他编程语言不同,JavaScript 没有定义不同类型的数字,如整数、短整数、长整数、浮点数等。
JavaScript 数字始终按照国际 IEEE 754 标准存储为双精度浮点数。
所以我的问题来了:如果我们要执行按位运算,javascript 如何将 64 位 IEEE 754 标准浮点数转换为普通的 32 位整数,效率如何?从直觉上看,转换数字会很昂贵,那么使用位移是否仍然比乘以 2n 更有效?
非常感谢!
【问题讨论】:
-
每个实现都可能不同,因此可能无法说出最有效的方法是什么。此外,如果您打算经常这样做,您实际上可以使用类型化数组。 W3Schools 并不完全正确……有些类型的数组可能对按位更有效,但您必须进行测试才能确定。 developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
-
如果您想“了解”一种操作相对于另一种操作的效率,那么您必须测试和测量性能,并且必须在您认为相关的任何浏览器和浏览器版本中对其进行表征。 jsperf.com 是运行此类测试的好工具。每个浏览器都有自己的实现,因此没有理论上的答案。测量,测量,测量。
-
您是否发现简单的乘法表现不佳?最易读且因此可维护的代码是不使用移位进行乘法运算的代码。
标签: javascript performance bit-manipulation