Різниця між "Я" та "загальним" у профілі JS Chrome CPU


229

Яка різниця між стовпцями "self" та "total" у профілюванні процесора Chrome JS-коду?

введіть тут опис зображення


13
Самостійний час майже ніколи не корисний для серйозного програмного забезпечення, оскільки майже весь час витрачається на виклик системи / бібліотеки / DB / IO тощо, тому лічильник програм витрачає дуже мало фактичного часу, як відсоток, у вашому коді, якщо ви не трапляється написати якусь тугу петлю. Це може сказати вам, що багато використовується в системних процедурах, але це не приносить вам користі. Потрібно знати, яка частина коду спричиняє багато часу.
Майк Данлаве

Якщо функція блокується за допомогою виклику вбудованого об’єкта (наприклад, несинусовий XMLHttpRequest надсилання), час самоврядування може бути дуже корисним. У таких випадках ці функції, будучи вузькими місцями, можуть не відображатись у верхній частині загальних вимірювань часу.
Костянтин

Відповіді:


303

self - це скільки часу було витрачено на роботу безпосередньо в цій функції.

total - це скільки часу було витрачено на цю функцію та в функції, яку вона назвала.


11
тож "self" буде лише вбудованими операторами, а не функціональними викликами? І загальний чи весь код, який виконується всередині дзвінка?
CoolUserName

42
До речі, оскільки люди, здається, вважають це корисною відповіддю: Це стосується взагалі профілів, а не лише Chrome.
duskwuff -inactive-

2
Що буде, якщо функція викликає себе рекурсивно? як би ви тоді правильно його прочитали?
Девід Лімкіс,

3
Посилання на документи тут (у розділі «Переглянути деталі функції») . Self time: Скільки часу знадобилося для завершення поточного виклику функції, включаючи лише заяви у самій функції, не враховуючи жодних функцій, які вона викликала. Total time: Час, необхідний для завершення поточного виклику цієї функції та будь-яких функцій, які вона викликала.
Іман Махмудінасаб

І яка семантика відсотка, який зараз відображається разом із значенням self та total time? Я маю на увазі це відсоток від того, що в чому?
jayarjo

10

Самостійний час: для функції - це кількість часу для виконання коду в межах функції (вбудовані оператори). Перевірка виконання окремих функцій відома як аналіз знизу вгору.

Загальний час: Для функції - це час самої функції цієї функції та час самоврядування всіх функцій, які функціонують дзвінками. Перевірка працездатності функцій разом із їхніми викликами - це аналіз зверху вниз.

NB: Тільки тому, що функція має високий час самостійної роботи, не означає, що сама функція є неефективною. Також важливо подивитися, скільки разів ця функція викликається.

Стаття від Intel

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.