javascript - 为什么 JavaScript 中的数学方法比按位运算符更快?

标签 javascript performance math cpu

为什么使用 Math 中的方法比 JavaScript 中的按位运算符更快吗?

例如:

  1. Math.floor| 0 (http://jsperf.com/floor-vs-bitwise22)
  2. Math.maxa ^ ((a ^ b) & -(a < b)) (http://jsperf.com/max-vs-bitwise-22)
  3. Math.minb ^ ((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/

相关文章:

math - 函数的右/左反函数是什么?

javascript - Select2 - 从 15k 单元格数组创建自动完成选择框

javascript - 如何使用扩展程序将代码注入(inject) facebook/google 网页?

javascript - 使用 lodash 或 underscorejs 的性能

math - 余数序列

c++ - 连续分布的指数衰减随机分布和离散化

javascript - 如何引发提示事件并发布到jsp?

php - 以 POST 请求发送删除操作

c - 使用 USB2 连接的 ext2 卷改善小文件读取时间

php - 为了导入大数据 (PHP),CSV 或 JSON 哪个最好