Разница между «собой» и «общим» в профиле процессора Chrome JS

229

В чем разница между столбцами «self» и «total» в профилировании процессора Chrome кода JS?

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

CoolUserName
источник
13
Самостоятельное время почти никогда не используется в серьезном программном обеспечении, потому что почти все время тратится на вызовы system / library / DB / IO и т. Д., Поэтому счетчик программы тратит очень мало фактического времени в процентах на ваш код, если только вы случается написать какой-то жесткий цикл. Это может сказать вам, что многое используется в системных подпрограммах, но это не приносит вам пользы. Вы должны знать, какая часть вашего кода требует много времени.
Майк Данлавей
Если функция блокируется с помощью вызова встроенного объекта (например, не асинхронная отправка XMLHttpRequest), самостоятельное время может быть очень полезным. В таких случаях эти функции, будучи узкими местами, могут не отображаться в верхней части общего измерения времени.
Константин

Ответы:

303

self сколько времени было потрачено на выполнение работы непосредственно в этой функции.

total сколько времени было потрачено на эту функцию и на функции, которые она вызывала.

сумеречный
источник
11
так что self будет только встроенными операторами, а не вызовами функций? И всего ли весь код выполняется внутри вызова?
CoolUserName
42
Между прочим, поскольку люди, кажется, находят этот полезный ответ: это верно для профилировщиков в целом, а не только в Chrome.
duskwuff -неактивный-
2
Что произойдет, если функция вызывает себя рекурсивно? как бы вы правильно прочитали это тогда?
Дэвид Лимкис
3
Ссылка на документы находится здесь (в разделе «Просмотр сведений о функции») . Self time: Сколько времени потребовалось для завершения текущего вызова функции, включая только операторы в самой функции, не включая функции, которые она вызывала. Total time: Время, необходимое для завершения текущего вызова этой функции и любых функций, которые она вызвала.
Иман
И какова семантика процентного соотношения, которое теперь отображается в значениях self и total time? Я имею в виду, это процент от того, что в чем?
Джаярджо
10

Self Time: для функции - количество времени для выполнения кода внутри функции (встроенные операторы). Проверка производительности отдельных функций называется анализом снизу вверх.

Общее время: для функции - это собственное время этой функции и время всех функций, которые она вызывает. Проверка производительности функций вместе с вызываемыми ими - это нисходящий анализ.

NB: То, что функция имеет большое время самосохранения, не означает, что сама функция неэффективна. Также важно посмотреть, сколько раз эта функция вызывается.

Статья Intel

JSON C11
источник