Różnica między „własnym” a „całkowitym” profilem procesora Chrome w JS


229

Jaka jest różnica między kolumnami „self” i „total” w profilowaniu procesora Chrome kodu JS?

wprowadź opis zdjęcia tutaj


13
Czas własny prawie nigdy nie jest użyteczny w poważnym oprogramowaniu, ponieważ prawie cały czas spędza się na wywoływaniu systemu / biblioteki / DB / IO itp., Więc licznik programu spędza w kodzie bardzo mało procentowego czasu rzeczywistego, chyba że użytkownik zdarzyło się napisać jakąś ciasną pętlę. To może ci powiedzieć, że wiele jest wykorzystywanych w procedurach systemowych, ale to ci nie pomaga. Musisz wiedzieć, która część kodu powoduje, że spędzasz dużo czasu.
— Mike Dunlavey,

Jeśli funkcja blokuje przez wywołanie wbudowanego obiektu (takiego jak niesynchroniczne wysyłanie XMLHttpRequest), czas własny może być bardzo przydatny. W takich przypadkach funkcje te, choć stanowią wąskie gardła, mogą nie być wyświetlane w górnej części całkowitych pomiarów czasu.
— Konstantin,

Odpowiedzi:


303

self to ile czasu spędzono na pracy bezpośrednio w tej funkcji.

total jest ilością czasu poświęconego na tę funkcję i na wywołane funkcje.


11
więc self byłoby tylko instrukcjami wbudowanymi, a nie wywołaniami funkcji? A w sumie cały kod jest wykonywany w wywołaniu?
— CoolUserName

42
Nawiasem mówiąc, ponieważ ludzie wydają się znajdować tę użyteczną odpowiedź: dotyczy to ogólnie profilerów, nie tylko Chrome.
— duskwuff -inactive-

2
Co by się stało, gdyby funkcja wywoływała się rekurencyjnie? jak w takim razie poprawnie go przeczytałeś?
— David Limkys

3
Link do dokumentów znajduje się tutaj (w sekcji „Wyświetl szczegóły funkcji”) . Self time: Ile czasu zajęło ukończenie bieżącego wywołania funkcji, w tym tylko instrukcji w samej funkcji, nie uwzględniając żadnych wywoływanych funkcji. Total time: Czas potrzebny na zakończenie bieżącego wywołania tej funkcji i wszystkich wywoływanych przez nią funkcji.
— Iman Mahmoudinasab,

A jaka jest semantyka procentu, który jest teraz pokazywany wzdłuż wartości siebie i całkowitego czasu? Mam na myśli, że to procent tego, w czym?
— jayarjo

10

Czas własny: dla funkcji jest to czas na wykonanie kodu w funkcji (instrukcje wbudowane). Sprawdzanie wydajności poszczególnych funkcji nazywa się analizą oddolną.

Całkowity czas: W przypadku funkcji jest to czas własny tej funkcji i czas własny wszystkich funkcji wywoływanych przez tę funkcję. Sprawdzanie wydajności funkcji wraz z ich odbiorcami jest analizą odgórną.

Uwaga: To, że funkcja ma wysoki czas własny, nie oznacza, że ​​sama funkcja jest nieefektywna. Ważne jest również, aby sprawdzić, ile razy ta funkcja jest wywoływana.

Artykuł autorstwa Intela

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.