Rysuję niektóre kształty (łuk, lineTo itp.) Do używania requestAnimationFrame
. Nic nadzwyczajnego, ale zauważam sporadyczne drgawki. Profilowałem przy użyciu inspektora osi czasu w narzędziach do Chrome Chrome i widzę dużą ilość czasu bezczynności na klatkę, z których niektóre obniżają FPS poniżej 60 (patrz zrzut ekranu). Czy istnieje znana przyczyna lub rozwiązanie tego problemu?Duże "bezczynne" paski w narzędziach uruchomieniowych Chrome Ramki osi czasu
12
A
Odpowiedz
4
Rysowanie kształtów na płótnie jest prawdopodobnie kosztowne pod względem obliczeniowym i musi podlegać "działaniu, które nie zostało zaprojektowane przez DevTools". Rozwiązałem problem z wydajnością, najpierw rysując kształty w buforze podręcznym poza ekranem, a następnie używając drawImage
, aby skopiować z powrotem do płótna głównego.
1
porównanie tych pików z wykresu pamięci. Z mojego doświadczenia wynika, że duże okresy spoczynku wydają się zbieżne ze zbieraniem śmieci.
Podobne pytania: [jeden] (http://stackoverflow.com/questions/12302286/what-causes-chrome-timeline-frame-to-have-so-much-empty-white-space?rq=1) , [dwa] (http://stackoverflow.com/questions/11423330/web-inspector-profiling-withframe-finding-the-foruse-forformance-problems), [three] (http: // stackoverflow.com/questions/18257206/extra-render-time-in-chrome-dev-tools-timeline-frames). Brak przydatnych informacji. Kilka odwołań do [tego posta G + autorstwa Nat Duca] (https://plus.google.com/+NatDuca/posts/BvMgvdnBvaQ?e=-RedirectToSandbox), ale nie robię nic z transformacjami 3D, więc nie mogę Myślę, że to ma zastosowanie. – endemic
Z [Dokumentacja DevTools] (https://developers.google.com/chrome-developer-tools/docs/timeline#frames_mode): "Możesz zauważyć obszary ramki, które są jasnoszare lub przezroczyste (puste w środku). regiony wskazują odpowiednio: 1.) Aktywność, która nie była oprzyrządowana przez program DevTools 2.) Czas bezczynności między cyklami odświeżania wyświetlacza Ramki w poniższym nagraniu pokazują zarówno aktywność bez narzędzi, jak i czas bezczynności. " Jednak to naprawdę nie wyjaśnia, jak rozwiązać problem. Jeśli klarowna część klatki jest bezczynna, dlaczego powoduje pomijanie klatek? – endemic
Mam ten sam problem; ramki kończą się na około 3 ms, ale z szalonymi czasami bezczynności, czasami 200 ms; co daje? zepsute narzędzia programistyczne? – AlexG