これら2つの関数の実行時間を測定しました。
次のメソッドの実行は、Chromeプロファイルツールを使用して測定されています。
// 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関数がネイティブJavaScriptフィルター関数よりも高速である理由について何か説明はありますか?
PS:この質問は、この回答に触発されました。