在JavaScript中对数字进行平方的最快方法是什么?
function squareIt(number) {
return Math.pow(number,2);
}
function squareIt(number) {
return number * number;
}
Run Code Online (Sandbox Code Playgroud)
或者其他一些我不知道的方法.我不是在寻找一个高尔夫球的答案,但平均而言,编译器的答案可能是最短的.
编辑:我看到为什么比乘以两个随机数快一个数字?这似乎表明平方比两个随机数乘以更快,并假设n*n不会利用这个,但Math.pow(n,2)会.正如jfriend00在评论中所指出的,然后在回答中,http: //jsperf.com/math-pow-vs-simple-multiplication/10 似乎表明直接乘法在除了Firefox之外的所有内容中都比较快同样很快).
jfr*_*d00 54
所有性能问题都应该通过测量来回答,因为浏览器实现的细节和您关心的特定场景通常决定了结果(因此理论上的讨论并不总是正确的).
在这种情况下,浏览器实现性能差别很大.以下是此jsperf测试中许多不同浏览器的结果:http://jsperf.com/math-pow-vs-simple-multiplication/10 ,它比较:
Math.pow(x1, 2)
x1 * x1
Run Code Online (Sandbox Code Playgroud)
更长的条形更快(更高的操作/秒).您可以看到Firefox优化两个操作几乎相同.在其他浏览器中,乘法明显更快.IE是最慢的,并显示两种方法之间最大的百分比差异.Firefox是最快的,显示两者之间的差异最小.

Pen*_*Liu 18
在ES6中,可以使用指数 n(x ** y)执行以下操作,该结果与Math.pow(x,y)以下结果相同:
function squareIt(number) {
return number ** 2;
}
console.log(squareIt(5));Run Code Online (Sandbox Code Playgroud)
或者您可以使用一个名为BigInteger.js的JavaScript库。
alert(bigInt(5).square());Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/big-integer/1.6.40/BigInteger.min.js"></script>Run Code Online (Sandbox Code Playgroud)