Що таке "(програма)" у профілі налагоджувача Chrome?


Відповіді:


95

(program)це сам Chrome, корінь дерева, що викликає всі інші коди ... він є, тому що перехід з рідного коду на JavaScript, завантаження ресурсів тощо повинен починатися десь :)

Ви можете побачити приклади перегляду дерев у документах інструментів для розробників Chrome .


43
ах - так, якщо це високий відсоток, чи можна щось зробити з цього приводу?
hvgotcodes

2
@hvgotcodes - Звучить, що це відсоток усіх порцій нижче. Тепер, якщо відсоток самодостатку високий, ви не можете багато чого зробити, якщо тільки ваша розмітка в цілому не дуже велика.
Нік Крейвер

1
Чи знаєте ви, будь ласка, як отримати доступ до коду в розділі "(програма)"? Якимось чином частини JavaScript в проекті, над яким я зараз працюю, закінчуються там, і єдиний спосіб я можу потрапити до налагоджувача - це встановити "налагоджувач". в код, що не зовсім зручно.
Ярослав Заруба

6
Я думаю, що це насправді неправильно, і відповідь @ user1009908 правильна. Це не корінь, а його рідний код. Підтримується той факт, що приклад перегляду дерева не показує його як корінь.
studgeek

3
Що стосується високого% програми (), то іноді css-анімація призводить до високого використання процесора, що буде відображено в програмі (). На жаль, профілер не може допомогти визначити джерело.
ılǝ

31

Я вважаю, що програма - це нативний код, а не корінь дерева.

Дивіться цю тему:

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

Отже, більше схожі на системні дзвінки, ніж як main ().

Мабуть, це включає час простою. Крім того, деякі профілі (програми) доступні з chrome: // profiler /


7
Погоджено - але лише оновлення: воно більше не включає час простою. Про це зараз повідомляється окремо як (у режимі очікування)
Gio

15

Як говорить @Nick, це має десь почати.

Схоже, що частина процесора Profiler подібна до багатьох інших профілів, які базуються на тих же концепціях, що і gprof .

Наприклад, self - це майже марне число, якщо в якомусь коді є щось на зразок міхура великого масиву чисел, який ви можете редагувати. Вкрай малоймовірно.

Усього має бути включено кальє, тому це корисніше. Однак, якщо зразки не беруться як у блокований час, так і під час роботи, це все ще є досить марним, за винятком програм, повністю пов'язаних з процесором.

Це дає вам статистику за функцією, а не за рядком коду. Це означає (якщо ви можете покластися на загальний відсоток), що функція коштує стільки, в тому сенсі, що якщо ви могли якось змусити її зайняти нульовий час, наприклад, заглушивши її, цей відсоток - це скільки часу ви заощадите.

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

Я не знаю, чи зможете ви отримати кращий профайлер, як, наприклад, набір настінних зразків для збору стеків на рівні лінії, наприклад Zoom . Ось як я це роблю .


@hvgotcodes: Не впевнений. Я не використовую їх, тому що я просто знімаю стеки у відладці. Але ви на Linux, правда? Чи можете ви отримати пробну копію Zoom? Це досить добре.
Майк Данлаве

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