这对我来说是一个巨大的惊喜,我想了解这个结果。我做了一个test in jsperf这基本上应该采用一个字符串(这是我想检查的 URL 的一部分)并检查是否存在 4 个项目(实际上存在于字符串中)。
它以 5 种方式检查:
令我大吃一惊的是,5 号是 Chrome 21 中最快的。这是我无法解释的。
在 Firefox 14 中,普通的 indexOf 是最快的,我相信这一点。
最佳答案
我也很惊讶,但 Chrome 使用 v8,这是一个高度优化的 JavaScript 引擎,可以使用各种技巧。 Google 的人可能拥有最大的 JavaScript 集来运行以测试其实现的性能。所以我猜会发生这种情况:
===,因此可以使用内置的 CPU 操作码来比较字符串 (repe cmpsb)。所以没有函数被调用(不同于任何其他测试用例)所有其他方法都需要调用函数和局部性对于正则表达式版本来说可能是个问题,因为它们构建了一个解析树。
关于Javascript 性能 : How come looping through an array and checking every value is faster than indexOf, 搜索和匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774366/