计数器直观的javascript sqrt性能?

时间:2016-09-22 16:23:21

标签: javascript performance

我正在参加一个webDev课程,我们要做的任务之一是计算一个年龄是否是一个完美的正方形。看到学生提出的一些不同的解决方案,我对实际表现感到好奇,所以我写了一个小测试,看看它们是如何相互叠加的,结果是对数学调用最多的那个。功能是最快和最快的。

以下是功能:

var func1 = function(age){
  var ageSq = Math.floor(Math.sqrt(age)) * Math.floor(Math.sqrt(age));
  return ageSq === age;
}
var func2 = function(age){
  return Math.sqrt(age) % 1 === 0;
}
var func3 = function(age){
  return Number.isInteger(Math.sqrt(age));
}
var func4 = function(age){
  return (parseInt(Math.sqrt(age)) * parseInt(Math.sqrt(age)) == age)
}

运行100,000个整数数组中的每一个,从每个整数的0-99总时间运行3次:

[4.405000000000015, 8.625000000000014, 10.54000000000002, 7.895000000000039]
[3.989999999999807, 6.310000000000002, 6.780000000000001, 6.444999999999993]
[3.584999999999795, 13.98500000000014, 11.47999999999999, 9.965000000000003]

正如你所看到的那样,第一个速度要快得多 - 但只要查看代码,我就会猜到它会是最慢的。任何想法在引擎盖下发生了什么?

0 个答案:

没有答案