javascript - 原始操作可以比javascript中的函数调用更快吗
问题描述
例如,这是不是更快……</p>
var min = a < b ? a : b;
A[A.length] = v;
比这个...
var min = Math.min(a, b);
A.push(v);
解决方案
在您的示例中,您正在比较不同的事物,因此测量性能可能会不一致。
首先,该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
推荐阅读
- c - URI 1101 数字序列和总和
- c++ - 我什么时候应该在 C++ 中将复制\移动构造函数标记为已删除?应该考虑哪些方面?
- node.js - 如何将 JWT 令牌发送到 Cookie 并在其他路由中使用?
- html - 滚动条手柄的固定高度
- python - 在 Python 中对 data.frame 列进行子集化和重命名的有效方法
- c# - 如何防止级联软删除efcore asp.net
- c++ - 使用“()”和“{}”初始化变量有什么区别?
- javascript - 在 django 中传递 ajax 时,一个变量显示其他变量
- javascript - 由于多个可折叠 div,我的其他元素在打开折叠时被隐藏
- python - 如何检查二维数组中的前一行?在 Python 中