JQuery grep (...) Performances du filtre JavaScript natif (...)
J'ai mesuré le temps d'exécution de ces deux fonctions:
L'exécution des méthodes suivantes ont été mesurées à l'aide de Profils google Chrome outil:
//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;
});
}
Tableau de words
a été construit de 1 millions de dollars générés au hasard des chaînes de caractères. Chaque méthode a été 20 fois. À ma grande surprise, jQuery
grep fonction a été plus rapide.
Temps d'exécution (20 environ):
Vous pouvez répétez measurings sur ce jsFidle - il faudra un certain temps pour exécuter afin d'être patient.
Est il une explication pourquoi jQuery grep fonction est plus rapide que d' natif JavaScript filtre fonction?
PS: Cette question a été inspiré par cette réponse.
source d'informationauteur PrimosK | 2012-12-30
Vous devez vous connecter pour publier un commentaire.
En comparant les fonction jQuery
$.grep
utilise sur la page(vérifier ici pour les non-compacte, grâce Alexander) contre l'algorithme spécifié pour
Array.le prototype.filtre
.Il me semble que
.filter
les forces de sonthis
à Objetvérifie le rappelIsCallable
et définitthis
en elle ainsi que la vérification de l'existence de la propriété à chaque itération, alors que.grep
suppose et ignore ces étapes, ce qui signifie qu'il est un peu moins passe.Combiner cela avec comment bien le compilateur JavaScript de Chrome est et vous trouverez peut-être la différence de vitesse.
L'ajout de certains d'entre eux en
$.grep
serait de la faire ressembler àet de prendre, en même temps que
.filter
(modifié d'Alexandre jsperf).