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

CoolUserName
źródło
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.

Duskwuff -inactive-
źródło
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

JSON C11
źródło