Різниця між "Я" та "загальним" у профілі 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.