12

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

frames with lots of idle time

+1

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

+1

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

+0

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

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.

+0

Czy możesz opublikować swój profil na osi czasu po wprowadzeniu ulepszeń? – sethro

+0

@sethro Wydaje się, że interfejs nieco się zmienił, ale [tutaj jest podobny zrzut ekranu] (http://imgur.com/0WQPg8b). Zauważ, że obliczenia/rendering spadają dobrze w każdej ramce ~ 16ms. – endemic

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.

Powiązane problemy