Я просто не получаю различные элементы вывода traceview, и я не могу найти учебник. Не могли бы вы объяснить следующее со ссылкой на приведенную ниже диаграмму:
Я не могу ответить на все ваши вопросы, но могу сказать...
для # 4 нет. Вы используете одноядерный процессор (или, по крайней мере, эмулируете один), поэтому задачи async в своем потоке должны прервать основной поток, чтобы получить время обработки. Каждый раз, когда выполняется другой поток, происходит "замедление" в основном потоке, поэтому вы должны следить за этим.
для # 6, те пробелы, которые вы видите в трассировке вашего основного потока, коррелируют точно со временем, когда ваша асинтеза получает процессорное время. Опять же, одно ядро, может делать только 1 поток за раз. В это время slice он не выглядит так, как любой другой процесс получил какое-либо процессорное время вообще, но эти потоки все еще спали в фоновом режиме. Так как это был (вероятно) эмулятор, это общий. На живом телефоне вы увидите еще много:)
Я также довольно уверен в # 1, что высота каждого всплеска в выполнении потока - это% использования процессора. Например, основная "черная" область не работает. Изменить: Хорошо, теперь я уверен. Это то, что есть. Таким образом, в вашем основном потоке эта область, которая является сплошным розовым, является надежным 100% -ным использованием процессора.
(Я бы добавил это в качестве комментария к ответу @ron, но моя репутация все еще недостаточно высока, чтобы я мог комментировать;)).
С июля 2011 года вы можете получить traceview и VMDebug, чтобы дать вам время настенных часов, а также время использования процессора, благодаря изменению кода Джеффом Брауном. Я боюсь, что необходимые разрешения требуют корневого устройства. Это также приводит к немного другому окну отслеживания, чем сообщение на tjb выше.
TL;DR; adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclock
и перезагрузите устройство.
HRM, так как я технически должен ответить на вопрос:
Мое понимание высоты баров заключается в том, что оно связано с родительскими функциями. Предположим, что a() вызывает b(). Затем выполняется(), а также работает b(). Пока работает b(), traceview покажет b цвет; но когда он работает (т.е. исключает время), он нарисует цвет, и он нарисует планку немного выше, чем b bar. По крайней мере, это определенно, как все работает, когда вы увеличиваете масштаб; Если вы нажмете на функцию, соответствующую более высокой полосе, она будет класть скобки под небольшими барами рядом с ней, показывая, что родитель несет ответственность за все это; и родитель всегда отображается как более высокий бар.
да:). Inclusive - это время, затраченное на выполнение функции или любой функции, вызываемой этой функцией; Эксклюзив - это "исключение вызываемых функций", и это просто время, проведенное в самой функции (или переключение в/из нее).
Только для верхнего уровня, который, я думаю, подразумевал; и даже тогда см. @ron ответ - это время использования процессора, а не время настенных часов. AsyncTasks запускаются в основном потоке и поэтому будут включены где-то в разбивке по верхнему уровню. То же самое для обработчиков
ответил Эрик
Нет, из-за округления/округления вниз (т.е. 1,87% будут отображаться как 1,9%); но сумма записей в "Эксклюзив" должна складываться до общего времени, показанного в верхнем правом углу, что совпадает с числом, вычисленным для вашего вопроса (3)
ответил Эрик
Другое важное ноу-хау в графике traceview (как упомянутом здесь): время, отображаемое traceview, не является реальными настенными часами время, но время CPU.
Например, при уменьшении FPS форма графика трассировки может не измениться, так как она не включает в себя холостые рабочие циклы. Поэтому при измерении производительности рекомендуется также запускать приложение в течение фиксированного времени (10 секунд, 60 секунд и т.д.) И проверять, меньше ли времени, затраченного на 100% включительно.
Google только что выпустил замечательный курс по Udacity по производительности Android. Там этот модуль, который обеспечивает прохождение Traceview, а также ссылку под видеомодулем в их руководство по курсу, которое охватывает использование Traceview в отличном глубина. Рассмотрение этих вопросов ответит на большинство ваших вопросов. Я настоятельно рекомендую вам проверить это!