【发布时间】:2016-06-17 22:19:18
【问题描述】:
我正在开发一个 javascript 应用程序,它大量使用数学运算,每次鼠标移动都会调用数十次。我一直在研究其他人的代码作为起点,我经常找到原生 javascript Math 的变通方法,例如...
var pi = Math.PI
var distance = (x * x) + (y * y) / R * R
var pixels = ~~(x/y)
使用 Math 对象是否会对性能造成重大影响?如果是这样,有哪些常见的解决方法?
【问题讨论】:
-
可能
Math方法是用实现 javascript 的语言(即典型浏览器中的 C 或 C++)实现的,因此它们比您用 Javascript 编写的要快得多 -
您是否测量性能差异?跨所有目标浏览器?
-
好吧,
Math没有“距离”方法,整数转换可能更快,但它在语义上也不同于Math.floor()或Math.round()。你可以使用 [jsperf](jsperf.com) 来测试这种东西。 -
您是否遇到性能问题或者这是过早优化的情况?假设前者你做过任何分析吗?
-
@SethCarnegie:当然,如果你正在解释它们。但是现在任何对性能敏感的 JS 都将被编译,因此 x*x 和 Math.pow(x, 2) 在代码生成方面几乎相同。
标签: javascript