I zmierzył czas wykonania tych dwóch funkcji:JQuery grep (...) VS rodzimej filtrem JavaScript (...) wykonywanie funkcji
wykonanie następujących metod została zmierzona za pomocą przyrządu profili Chrome.BROWSER_UPGRADE_END_LINK
// 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;
});
}
Tablica z words
została zbudowana z 1 miliona losowo wygenerowanych ciągów. Każda metoda została uruchomiona 20 razy. Zaskakujące, że funkcja grep była szybsza.
razy Execution (20 egzekucje):
Można repeate Pomiary na ten jsFidle - wykonanie zabierze trochę czasu, więc bądź cierpliwy.
Czy istnieją jakieś wyjaśnienie, dlaczego jQuery grep funkcja jest szybszy następnie rodzimej JavaScript filter funkcji?
PS: To pytanie zostało zainspirowane tym answer.
Szukasz wyjaśnienia? Spróbuj rzucić okiem na [** implementację grep **] (https://github.com/jquery/jquery/blob/master/src/core.js#L712).Jeśli chodzi o testowanie wydajności, użyj [** JSPerf **] (http://jsperf.com/) zamiast tworzyć skrypt, który może zablokować przeglądarkę. – Joseph
Umieściłem go w [** zestawie testów w jsPerf **] (http://jsperf.com/filterings). Zredużyłem go do elementów "100 000", ale nawet "1000" jest w porządku. – Alexander
@JosephtheDreamer dzięki za wskazówki. – PrimosK