На вкладке «Сверху вниз» отображается список вызовов, в котором при раскрытии узла метода или функции отображаются его вызываемые объекты. На рис. 2 показан график сверху вниз для следующей диаграммы вызовов. Каждая стрелка на графике указывает от вызывающего абонента к вызываемому.
Как показано на рисунке 2, при раскрытии узла метода A на вкладке «Сверху вниз» отображаются вызываемые им методы B и D. После этого при расширении узла метода D отображаются его вызываемые методы, такие как методы B и C. Подобно Flame На вкладке «Диаграмма» дерево сверху вниз объединяет информацию трассировки для идентичных методов, которые используют один и тот же стек вызовов. То есть вкладка «Пламенная диаграмма» представляет собой графическое представление вкладки «Сверху вниз» .
На вкладке «Сверху вниз» представлена следующая информация, помогающая описать время ЦП, затраченное на каждый вызов (время также представлено в процентах от общего времени потока в выбранном диапазоне):
- Self: время, которое вызов метода или функции потратил на выполнение своего собственного кода, а не кода вызываемых объектов, как показано на рисунке 1 для метода D.
- Дочерние элементы: время, которое вызов метода или функции потратил на выполнение своих вызываемых объектов, а не собственного кода, как показано на рисунке 1 для метода D.
- Итого: сумма времени метода Self и Children . Это общее время, затраченное приложением на выполнение вызова, как показано на рисунке 1 для метода D.
На вкладке «Снизу вверх» отображается список вызовов, в котором при раскрытии узла функции или метода отображаются вызывающие их объекты. Используя пример трассировки, показанный на рисунке 2, на рисунке 3 показано дерево метода C снизу вверх. При открытии узла метода C в дереве снизу вверх отображаются все его уникальные вызывающие методы, методы B и D. Обратите внимание, что, хотя B вызывает C дважды, B появляется только один раз при расширении узла для метода C в дереве снизу вверх. После этого при раскрытии узла для B отображается его вызывающая сторона, методы A и D.
Вкладка «Снизу вверх» полезна для сортировки методов или функций по тем, которые потребляют больше всего (или меньше всего) процессорного времени. Вы можете проверить каждый узел, чтобы определить, какие вызывающие программы тратят больше всего процессорного времени на вызов этих методов или функций. По сравнению с деревом «сверху вниз», информация о времени для каждого метода или функции в дереве «снизу вверх» относится к методу наверху каждого дерева (верхний узел). Время ЦП также представлено в процентах от общего времени потока во время записи. Следующая таблица помогает объяснить, как интерпретировать информацию о времени для верхнего узла и его вызывающих объектов (подузлов).
Себя | Дети | Общий | |
---|---|---|---|
Метод или функция наверху дерева снизу вверх (верхний узел) | Представляет общее время, которое метод или функция потратили на выполнение своего собственного кода, а не кода вызываемых объектов. По сравнению с деревом сверху вниз, эта информация о времени представляет собой сумму всех вызовов этого метода или функции за время записи. | Представляет общее время, затраченное методом или функцией на выполнение вызываемых объектов, а не собственного кода. По сравнению с деревом сверху вниз, эта информация о времени представляет собой сумму всех вызовов этого метода или вызываемых функций за время записи. | Сумма личного времени и времени детей. |
Вызывающие абоненты (подузлы) | Представляет общее время пребывания вызываемого абонента при вызове вызывающего абонента. Используя в качестве примера дерево снизу вверх на рисунке 6, собственное время для метода B будет равно сумме собственного времени для каждого выполнения метода C при вызове B. | Представляет общее время дочерних элементов вызываемого объекта при вызове вызывающего объекта. Если использовать в качестве примера дерево снизу вверх на рисунке 6, то дочернее время для метода B будет равно сумме дочерних времен для каждого выполнения метода C при вызове B. | Сумма личного времени и времени детей. |
Примечание. Для данной записи Android Studio прекращает сбор новых данных, когда профилировщик достигает ограничения размера файла (однако это не останавливает запись). Обычно это происходит гораздо быстрее при инструментальной трассировке, поскольку этот тип трассировки собирает больше данных за более короткое время по сравнению с выборочной трассировкой. Если вы продлите время проверки на период записи, которая произошла после достижения предела, данные синхронизации на панели трассировки не изменяются (поскольку новые данные недоступны). Кроме того, на панели трассировки отображается значение NaN для информации о времени, когда вы выбираете только ту часть записи, для которой нет доступных данных.