首页 > 解决方案 > 原始操作可以比javascript中的函数调用更快吗

问题描述

例如,这是不是更快……</p>

var min = a < b ? a : b;
A[A.length] = v;

比这个...

var min = Math.min(a, b);
A.push(v);

标签: javascript

解决方案


在您的示例中,您正在比较不同的事物,因此测量性能可能会不一致。

首先,该Math.min函数是一个严格的数值函数,而if它只是一个真/假决策分支:不涉及一致性检查。

let a, b = 3;
const x = a < b ? a : b;
console.log(x); //leads 3

const y = Math.min(a, b);
console.log(y); //leads NaN

关于数组,应避免使用第一种形式。我认为在严格模式下是禁止的(原因很明显)。

相反,如果您在数组中寻求性能,则应尽可能尝试预先分配它们。例如,不是“附加”项目,而是将数组大小调整为合理的长度(足够大),然后简单地设置单元格内容。这应该防止数组的隐藏重新分配(以及成本)。

仅描述一个可能的场景:

const arr = new Array(20);  //allocate 20 cells once only
let l = 0;  //allocate numeric variable (cheap)

a[l++] = 123;       //no allocation involved
a[l++] = 456;       //still no allocation

推荐阅读