为什么使用 Math
中的方法比 JavaScript 中的按位运算符更快吗?
例如:
-
Math.floor
与| 0
(http://jsperf.com/floor-vs-bitwise22) -
Math.max
与a ^ ((a ^ b) & -(a < b))
(http://jsperf.com/max-vs-bitwise-22) -
Math.min
与b ^ ((a ^ b) & -(a < b))
(http://jsperf.com/min-vs-bitwise-22)
我想知道实现级别,因为在位级别执行某些操作,我想我会跳过计算机将要执行的所有转换和调用,以在位级别执行我想要的操作,这会减少 CPU 操作。
发生了什么事?
最佳答案
… I thought I would jump all the translations and calls that a computer is gonna do …
现代优化 JavaScript 引擎可以执行令人惊讶的优化。在这种情况下,我猜想 Math
调用只是内联的。
如果您确实想知道发生了什么,而不仅仅是猜测,那么您必须查看优化器生成的最终结果。参见例如How can I see the machine code generated by v8?有关详细信息。
关于javascript - 为什么 JavaScript 中的数学方法比按位运算符更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30215347/