dav*_*ave 3 javascript arrays performance
这个问题的灵感来自这个问题的竞争答案:indexOf with multiple arguments
用户想知道一种有效的方法来测试数组中是否存在一个或多个给定的整数。具体来说,给定一个数组和数字123, 124, and 125,如何判断给定数组中是否存在这些整数中的一个或多个。提出了两种解决方案:
使用indexOf():
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var exists = array.indexOf(123) !== -1 || array.indexOf(124) !== -1 || array.indexOf(125) !== -1;
Run Code Online (Sandbox Code Playgroud)
或者,使用some():
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var exists = array.some(function(item) {
return item === 123 || item === 124 || item === 125;
});
Run Code Online (Sandbox Code Playgroud)
找到成功匹配时,ECMA-262 算法indexOf()和some()短路算法,但我认为some()当没有匹配时,实现会更快。但是,另一位用户指出该indexOf()解决方案更快。
indexOf()代码如何更高效,即使它必须多次迭代数组?
问题是 - 您的问题高度依赖于标准本身,而不是标准的实施方式。
也就是说,不同引擎之间的结果可能不一致。
通过内联函数调用和其他一些棘手的优化,可以减轻某些引擎中某个时间“调用函数会产生开销”这一非常明显的假设。
总结一下:对此没有唯一的正确答案,任何不使用对 ES 实现的任何引用 + 运行时细节(cpu 指令/操作码、使用的优化)的答案都只是一种推测。
| 归档时间: |
|
| 查看次数: |
1761 次 |
| 最近记录: |