gemessen ich die Ausführungszeiten dieser beiden Funktionen:JQuery grep (...) VS nativer JavaScript-Filter (...) Funktion Leistung
Chrome Profiles WerkzeugDie Ausführung der folgenden Methoden gemessen wurden:
// 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;
});
}
Das Array words
wurde aus 1 Million zufällig generierten Strings aufgebaut. Jede Methode wurde 20 Mal ausgeführt. Auf meine Überraschung jQuery
Grep-Funktion war schneller.
mal Execution (20 Hinrichtungen):
Sie Messungen auf diese jsFidle repeate kann - Es wird einige Zeit dauern, um auszuführen, also sei geduldig.
Gibt es eine Erklärung, warum jQuery grep Funktion schneller als native JavaScript filter Funktion?
PS: Diese Frage wurde von dieser answer inspiriert.
Suchen Sie nach der Erklärung? Werfen Sie einen Blick auf [** die Implementierung von grep **] (https://github.com/jquery/jquery/blob/master/src/core.js#L712).Verwenden Sie zum Testen der Leistung [** JSPerf **] (http://jsperf.com/), anstatt ein Skript zu erstellen, das den Browser einfrieren kann. – Joseph
Ich lege es in [** eine Testsuite in jsPerf **] (http://jsperf.com/filterings). Ich habe es auf '100 000' Elemente reduziert, sogar' 1000' ist in Ordnung – Alexander
@JosephtheDreamer danke für Tipps. – PrimosK