N'ajoutant trop d'écouteurs d'événement affecter les performances?
J'ai une question d'ordre général à propos de javascript (jQuery) événements/auditeurs.
Est-il une limite pour le nombre de cliquer sur écoute sans arriver les problèmes de performance?
- Besoin de plus de contenu. un gestionnaire de clic habitude de vous donner des problèmes de perf, c'est que les mesures prises sur cliquez que "peut" entraîner des problèmes. aussi, un clic peut être lié à 1 élément, ou 20 000 éléments, de sorte que plus d'informations sont nécessaires.
- Si j'ai mis sur plusieurs elemts un écouteur de clics avec jquery. C'est ce que je veux dire. L'ensemble de l'application a pour l'écouter. Je parle de 5-20 cliquez sur l'auditeur. Je ne sais pas si c'est un problème, c'est pourquoi je demande 🙂
- Voici un jsperf test sur cliquez sur les événements liés à un ou plusieurs éléments, vous verrez que même si un seul événement est lié, le nombre d'éléments qui correspondent à la sélection qui a un impact plus important. de sorte que l'effet de la perf beaucoup plus que nombre d'événements. Le test (mise à jour) montre également comment vous pouvez lier à un parent, à améliorer les perf de se lier à de nombreux éléments. (œuvres les plus rapides ici que c'est une
id
- Je vérifie si j'ai bien compris vous. Donc, si j'ai mis 10 écouteur sur 10 différents éléments est moins un problème de perf que de mettre un listener sur 10 éléments avec la même classe?
- C'est plus sur le nombre d'éléments et la façon dont ils sont choisis, plutôt que de l'ajout de l'événement, c'est l'auto. c' perf test, montre que l'ajout de 3 activités distinctes, à un élément avec un
id
est à peu près aussi rapide que l'ajout d'un événement à l'aide d'unclass
, donc, l'ajout de l'événement n'a pas vraiment d'impact de la perf, sa façon de vous obtenir les éléments (et combien d'éléments) qui a un effet - Qui ne semble pas être le cas aujourd'hui, actuellement, le test s'exécute '42% plus lente" pour l'id de l'élément avec 3 événements attachés, vs 1 cas sur un sélecteur de classe
- très possible, qui était de 4 an, j'imagine juste la mise à jour de jquery versions récentes, il faudrait aussi donner des résultats très différents
Vous devez vous connecter pour publier un commentaire.
En termes de performance, le nombre d'éléments de l'événement est lié à est où vous pouvez voir toute les problèmes.
Ici est un jsperf test. Vous verrez que la liaison de plusieurs éléments est beaucoup plus lent, même si un seul événement est lié dans chaque cas.
La 3ème épreuve de la jsperf montre comment vous pouvez lier l'événement à un élément parent et l'utilisation de la délégation à écouter pour les éléments que vous souhaitez. (Dans ce cas
.many
)n.b. Le test montre que la 3ème option est la plus rapide, mais c'est parce que c'est le ciblage de l'élément avec un
id
et non une classe.Mise à jour: Voici une autre test de perf montrant 3 événements liés à un
id
vs un événement lié à l'aide d'unclass
$(element).on()
... donc au lieu de $("ul li").on('click', callback)` Utiliser$('ul').on('click', 'li', callback)
.li
) effets