Mam dość złożoną aplikację JavaScript, która ma główną pętlę wywoływaną 60 razy na sekundę. Wydaje się, że odbywa się dużo wyrzucania elementów bezużytecznych (na podstawie danych wyjściowych „piłokształtnych” z osi czasu pamięci w narzędziach deweloperskich Chrome) - co często wpływa na wydajność aplikacji.
Więc próbuję zbadać najlepsze praktyki, aby zmniejszyć ilość pracy, którą musi wykonać odśmiecacz. (Większość informacji, które udało mi się znaleźć w sieci, dotyczy unikania wycieków pamięci, co jest nieco innym pytaniem - moja pamięć się uwalnia, po prostu dzieje się za dużo śmieci). że sprowadza się to głównie do ponownego wykorzystania obiektów w jak największym stopniu, ale oczywiście diabeł tkwi w szczegółach.
Struktura aplikacji jest podzielona na `` klasy '' zgodnie z prostym dziedzictwem JavaScript Johna Resiga .
Myślę, że jednym problemem jest to, że niektóre funkcje można wywoływać tysiące razy na sekundę (ponieważ są używane setki razy podczas każdej iteracji głównej pętli) i być może lokalne zmienne robocze w tych funkcjach (łańcuchy, tablice itp.) może być problem.
Zdaję sobie sprawę z łączenia obiektów dla większych / cięższych obiektów (i używamy tego w pewnym stopniu), ale szukam technik, które można zastosować na całej planszy, szczególnie w odniesieniu do funkcji, które są wywoływane bardzo wiele razy w ciasnych pętlach .
Jakich technik mogę użyć, aby zmniejszyć ilość pracy, którą musi wykonać odśmiecacz?
A może także - jakie techniki można zastosować, aby określić, które obiekty są najczęściej zbierane jako śmieci? (Jest to bardzo duża baza kodu, więc porównywanie migawek stosu nie było zbyt owocne)