Что такое «(программа)» в профайлере отладчика Chrome?

Ответы:

96

(program)это сам Chrome, корень дерева, вызывающий весь другой код ... он существует потому, что переход с нативного кода на JavaScript, загрузка ресурсов и т. д. должен начаться где-то :)

Вы можете увидеть примеры древовидной структуры в документации по инструменту разработчика Chrome .

Ник Крейвер
источник
43
ах - так что, если это высокий процент, могу ли я что-нибудь с этим сделать?
hvgotcodes
2
@hvgotcodes - это будет процент от всех порций ниже. Теперь, если сам процент высок, вы ничего не можете сделать .... если ваша разметка в целом не очень тяжелая.
Ник Крейвер
1
Знаете ли вы, как получить доступ к коду в разделе "(программа)"? Каким-то образом части JavaScript в проекте, над которым я сейчас работаю, заканчиваются, и единственный путь, которым я могу добраться в отладчике, - это поместить "debugger;" в код, который не совсем удобно.
Ярослав Заруба
6
Я думаю, что это на самом деле неправильно, и ответ @ user1009908 правильный. Это не рут, это родной код. Это подтверждается тем фактом, что пример дерева не отображает его как корень.
studgeek
3
Что касается высокого% программы (), иногда анимации CSS приводят к высокой загрузке процессора, что будет отражено в программе (). К сожалению, профилировщик не может помочь точно определить источник.
15.12.15
31

Я считаю (программа) это нативный код, а не корень дерева.

Смотрите эту тему:

https://bugs.webkit.org/show_bug.cgi?id=88446

Итак, больше похоже на системные вызовы, чем на main ().

Видимо это включает в себя простой. Также некоторое профилирование (программы) доступно из chrome: // profiler /

user1009908
источник
7
Согласен - но только обновление: оно больше не включает время простоя. Это теперь сообщается отдельно как (бездействующий)
Gio
15

Как говорит @ Ник, это должно начаться где-то.

Похоже, что часть CPU Profiler похожа на многие другие профилировщики, которые основаны на же и gprof .

Например, self - это почти бесполезное число, если в каком-то коде, который вы можете редактировать, есть что-то вроде пузыря большого массива чисел. Очень маловероятно.

Общее количество должно включать вызываемых, так что это более полезно. Однако, если сэмплы не берутся как во время блокировки, так и во время выполнения, это все еще довольно бесполезно, за исключением полностью связанных с процессором программ.

Это дает вам эту статистику по функциям, а не по строке кода. Это значит (если бы вы могли положиться на Total процент), что функция стоит так дорого, в том смысле, что если бы вы могли как-то заставить ее занять нулевое время, например, путем ее заглушки, этот процент - это то, сколько времени вы бы сэкономили.

Поэтому, если вы хотите сосредоточиться на дорогостоящей функции, вам нужно искать внутри нее то, что можно оптимизировать. Для этого вам нужно знать, как время подразделяется на строки кода в функции. Если бы у вас были затраты на основе кода, это привело бы вас непосредственно к этим строкам.

Я не знаю, удастся ли вам получить лучший профилировщик, такой как сэмплер стека настенных часов, работающий на уровне линии, например Zoom . Вот как я это делаю .

Майк Данлавей
источник
@hvgotcodes: не уверен. Я не использую их, потому что я просто делаю стеки в отладчике. Но вы на Linux, верно? Можете ли вы получить пробную копию Zoom? Это очень хорошо.
Майк Данлавей,
@hvgotcodes: Ну, единственная помощь, которую я могу предложить, - это метод, на который я полагаюсь.
Майк Данлавей