Mam ogólne pytanie dotyczące zdarzeń/słuchaczy javascript (jQuery). Czy istnieje limit liczby odbiorców nasłuchujących bez problemów z wydajnością?Czy dodanie zbyt wielu detektorów zdarzeń wpływa na wydajność?
Odpowiedz
Pod względem wydajności liczba elementów, do których odnosi się wydarzenie, to miejsca, w których występują problemy.
Oto jsperf test. Zobaczysz, że wiązanie wielu elementów jest znacznie wolniejsze, mimo że tylko jedno zdarzenie jest wiązane w każdym przypadku.
Trzeci test w jsperf pokazuje, jak powiązać zdarzenie z elementem nadrzędnym i użyć delegacji do odsłuchiwania żądanych elementów. (W tym przypadku .many
)
n.b. Test pokazuje, że trzecia opcja jest najszybsza, ale dzieje się tak dlatego, że celuje w element z wartością id
, a nie klasą.
Aktualizacja: Oto kolejny perf test Pokazuje 3 zdarzenia związane do id
vs jednym zdarzeniem związanym z użyciem class
Dziękuję za odpowiedź @atmd - Test [jsperf] (http://jsperf.com/click-perf) zademonstrował problem znakomicie –
I + 1'd tej odpowiedzi.Od razu, jeśli używasz jQuery, spróbuj faworyzować delegowany dodatkowy argument przy użyciu '$ (element). on() '... tak zamiast zamiast $ ('ul li'). on ('click', callback)' Użyj '$ ('ul'). on (" click "," li ", callback) '. – ded
@ded Agreed. Mogę zaktualizować odpowiedź w pewnym momencie za pomocą jsperf, aby pokazać efekty delegacji. byłoby interesujące zobaczyć, czy/jak liczba elementów podrzędnych (w twoim przykładzie 'li') wpływa na to. – atmd
- 1. Dodawanie detektorów zdarzeń do wielu elementów
- 2. dodawanie wielu detektorów zdarzeń do jednego elementu
- 3. Dodanie detektorów zdarzeń Jquery do dynamicznie dodawanych elementów
- 4. Czy posiadanie wielu bibliotek dll w projekcie Windows Phone wpływa na wydajność?
- 5. Implementacja wielu detektorów zdarzeń w tym samym fragmencie - Android
- 6. z-index, jak wpływa to na wydajność?
- 7. Ile wyrażeń "jeśli" wpływa na wydajność?
- 8. Czy przypięcie obiektu w LOH wpływa na wydajność GC?
- 9. Czy szyfrowanie RDS AWS z usługą KMS wpływa na wydajność?
- 10. Czy umieszczenie bloku try-catch wpływa na wydajność?
- 11. Hows czy duży dziennik transakcji wpływa na wydajność?
- 12. Czy korzystanie z wirtualnego środowiska wpływa na wydajność aplikacji internetowej?
- 13. Dlaczego symfony2 nie wywołuje moich detektorów zdarzeń?
- 14. Subskrybent zdarzeń Symfony2 nie wywołuje detektorów
- 15. W jakich sytuacjach zamrażanie obiektów WPF znacząco wpływa na wydajność?
- 16. Czy dodanie [Serializable] do klasy może mieć wpływ na wydajność?
- 17. Redis: W jaki sposób "mem_fragmentation_ratio" wpływa na wydajność?
- 18. W jaki sposób klauzula IN wpływa na wydajność w Oracle?
- 19. Ustawianie AppWidget tło dla jednej widget wpływa na innych zbyt
- 20. Dołączanie wielu detektorów do widoków w systemie Android?
- 21. Skuteczność detektora zdarzeń JavaScript dla setek elementów DOM
- 22. Czy istnieje sposób na dodanie wielu odbiorników w Pythonie SMTPlib?
- 23. Action Script: Czy ustawienie obiektu na wartość null powoduje automatyczne usunięcie wszystkich dołączonych detektorów zdarzeń?
- 24. Czy mogę uzyskać wartość bez używania detektorów zdarzeń w firebase na Androida?
- 25. Jak skopiować węzeł DOM za pomocą detektorów zdarzeń?
- 26. Wydajność narzut dodanie pola BLOB do tabeli
- 27. Czy zmiana kolejności Java wpływa na System.currentTimeMillis()?
- 28. Czy maksymalny limit właściwości konfiguracji MaxReceivedMessageSize w wcf wpływa na wydajność usługi?
- 29. Czy rozmiar pliku wojny wpływa w pewien sposób na wydajność aplikacji i/lub serwera aplikacji?
- 30. Wydajność wielu wartości
potrzebuje więcej treści naprawdę. obsługa kliknięć nie zapewni ci doskonałych problemów, to działania podejmowane na kliknięciu, które "mogą" powodować problemy. również jedno kliknięcie może być powiązane z 1 elementem lub 20 000 elementów, więc potrzebnych jest więcej informacji. – atmd
Jeśli umieścić na kilku elemts clickener z jquery. To co mam na myśli. Cała aplikacja musi go słuchać. Mówię o słuchaczu z 5-20 kliknięciami. Nie wiem, czy to jest problem, dlatego pytam :) –
Oto test [jsperf] (http://jsperf.com/click-perf) w przypadku zdarzeń kliknięcia związanych z jednym lub wieloma elementami, zobaczysz, że nawet jeśli tylko jedno wydarzenie jest powiązane, liczba elementów pasujących do tego wyboru ma większy wpływ. tak, że wpłynie to znacznie lepiej niż liczba zdarzeń. Test (właśnie zaktualizowany) pokazuje również, w jaki sposób wiązałeś się z rodzicem, aby ulepszyć wiązanie wielu elementów. (działa najszybciej tutaj, ponieważ jest to "id" – atmd