我有兴趣知道 .includes() 方法使用什么算法?它是否使用像 rabin karp 这样的模块化哈希?
在不了解更多有关其方法和速度的情况下,我对使用 .includes() 有点犹豫。我发现的文档在讨论它时没有详细说明(例如https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes)
鉴于不同的引擎可以以不同的方式实现 .includes,因此可能很难对实现做出笼统的声明。然而,应该可以通过进行一些基准测试来了解它的速度(因为测试可能是确定的唯一方法)。
使用节点 7.0 我尝试测试三个不同的功能:
1.includes(),传入一个顺序数组
2. 一个基本的for循环,传入一个顺序数组
3. has(),从顺序数组中传入预先创建的集合
我获得的结果表明数组本身的长度似乎并不重要(如希望的那样),但所需的数字距离开始有多远却很重要。对于查找索引
诚然,这些测试在某种程度上是有限的,许多因素可能会影响它们。一个有趣的结果是,如果从传入的数组(而不是其他数组)创建一个集合,即使该集合没有传递到函数中,它似乎也会提高包含的速度,并降低包含的速度for循环函数略。我认为某种类型的缓存在某种程度上有利于 .includes() ?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)