【发布时间】:2012-12-14 23:47:19
【问题描述】:
我测量了这两个函数的执行时间:
已使用 Chrome Profiles 工具测量了以下方法的执行情况:
// jQuery GREP function
function alternative1(words, wordToTest) {
return $.grep(words, function(word) {
return wordToTest.indexOf(word) != -1;
});
}
// Native javascript FILTER function
function alternative2(words, wordToTest) {
return words.filter(function(word) {
return wordToTest.indexOf(word) != -1;
});
}
words 的数组由 100 万个随机生成的字符串构成。每种方法运行 20 次。令我惊讶的是jQuery grep 函数更快。
执行次数(20 次执行):
您可以在此jsFidle 上重复测量 - 执行需要一些时间,所以请耐心等待。
有什么解释为什么 jQuery grep 函数比 native JavaScript filter 函数更快吗?
PS:这个问题的灵感来自answer。
【问题讨论】:
-
寻找解释?试试看the implementation of grep。至于测试性能,请使用JSPerf,而不是制作可以冻结浏览器的脚本。
-
我把它放到a test suite in jsPerf。我把它减少到
100 000元素,即使1 000也很好 -
@JosephtheDreamer 感谢您的提示。
-
@Alexander 感谢您将 JSFiddle 代码移植到 JSPerf。
标签: javascript jquery performance native execution-time