jQuery.grep与Array.filter的性能

在一个问题中,讨论了jQuery和原生JS将如何相互对抗

当然,香草解决方案的执行速度要快得多,因为它不处理整个阵列。我建议使用array.filter,我很有信心它至少比$.grep

令人惊讶的是,在将它添加到测试中之后,我得到了一个教训:Testsuite

边缘病例当然有不同的结果

任何人都知道为什么$.grep应该比本机方法Arrray.filter快3倍以上

编辑:我修改了测试以使用MDN中的过滤器垫片,结果非常有趣:

  • Chrome:即使MDN shim也比原生方法快,jQuery遥遥领先
  • Firefox:shim比原生方法慢一点,jQuery遥遥领先

最后我希望能看到这样的结果

  • Internet Explorer:
    原生方法是最快的,然后是jQuery,shim是最慢的(也许这只是IEs相当弱的JS引擎的结果…)

这篇博文所示(该博文也进行了同样的测试):

如果您阅读过滤器的文档,就会明白为什么它会慢得多

  1. 它会忽略阵列中已删除的值和间隙
  2. 它可以选择设置谓词函数的执行上下文
  3. 它防止谓词函数改变数据

发表评论