Intereting Posts
Android Facebook SDK: проверьте, зарегистрирован ли пользователь или нет. BottomNavigationView отображает как значки, так и текстовые метки во все времена Максимальная емкость хранилища SQLite Изменение размера изображения, поворот, перемещение путем добавления некоторого индикатора вокруг изображения Android – Не удалось найти информацию о поставщике для com.google.settings в примере MapView Первичный цвет (иногда) прозрачный Больше не требуется ActivityManager – не проблема службы Всегда ли безопасно использовать контекст для активности в представлении? Как отправить запрос реферера в URL-адрес для webView Android PopupWindow и WRAP_CONTENT не работают вместе Добавить границы для отображения, чтобы избежать прокрутки вне определенного региона Gradle ищет aar в папке с неправильным проектом Проведите по экрану Android в нижней части экрана. Получение наиболее точного местоположения / позиции? (GPS / Kalman / Android) Скрыть меню опций на PreferenceFragment

Android Eclipse: Traceview, я просто не понимаю

Я просто не получаю различные элементы вывода traceview , и я не могу найти учебник. Не могли бы вы объяснить, пожалуйста, следующее со ссылкой на приведенную ниже диаграмму:

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

  1. Ширина полос соответствует времени, которое занимает функция. С чем соответствует высота?
  2. Какова конкретная разница между Inclusive и Exclusive. Я предположил, что включительно включает в себя призывы всех функций детей?
  3. Это будет так: сумма (время на вызов раз вызывает) = время выполнения программы (как насчет задач async?)
  4. Можно ли игнорировать задачи async при отладке в основном потоке?
  5. Должна ли сумма всех процентов в Excl% равняться 100%?
  6. Что происходит, когда есть пробелы (белый в середине черного)? Это происходит, когда выполняются другие процессы Android или только ваши собственные задачи async (похоже, что пробелы в одном совпадают с заполненной частью в другой, если это случай, тогда есть какая-то точка в перемещении интенсивных задач в AsyncTask )?

Solutions Collecting From Web of "Android Eclipse: Traceview, я просто не понимаю"

Я не могу ответить на все ваши вопросы, но могу сказать …

Для # 4 нет. Вы используете одноядерный процессор (или, по крайней мере, эмулируете один), поэтому задачи async в своем потоке должны прервать основной поток, чтобы получить время обработки. Каждый раз, когда выполняется другой поток, происходит «замедление» основного потока, поэтому вы должны следить за этим.

Для # 6 эти пробелы, которые вы видите в трассировке вашего основного потока, коррелируют точно со временем, когда ваша асинтеза получает процессорное время. Опять же, одно ядро, может выполнять только 1 поток за раз. В это время slice он не выглядит так, как любой другой процесс получил какое-либо время процессора, но эти потоки все еще спали в фоновом режиме. Так как это был (вероятно) эмулятор, это общий. На живом телефоне вы увидите еще много 🙂

Я также довольно уверен в # 1, что высота каждого всплеска в исполнении потока – это% использования процессора. Например, «черная» область основного потока является бездействующей. Изменить: Хорошо, теперь я уверен. Это то, что есть. Таким образом, в вашем основном потоке эта область, которая является сплошным розовым, является надежным 100% -ным использованием процессора.

(Я бы добавил это как комментарий к ответу @ ron, но моя репутация по-прежнему не настолько высока, что я могу прокомментировать;)).

С июля 2011 года вы можете получить трассировку и VMDebug, чтобы дать вам время настенных часов, а также время использования процессора, благодаря изменению кода Джеффом Брауном. Я боюсь, что необходимые разрешения требуют внедренного устройства. Это также приводит к немного другому окну отслеживания, чем сообщение по tjb выше.

http://git.insignal.co.kr/?p=mirror/aosp/platform/dalvik.git;a=commitdiff;h=9f640af99bebc6e96f6e1e9903557e2c8f567483

TLDR; adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclock и перезагрузите устройство.

HRM, так как я технически должен помочь ответить на вопрос:

  1. Мое понимание высоты баров заключается в том, что оно связано с родительскими функциями. Предположим, что a () вызывает b (). Затем выполняется (), а также работает b (). Пока работает b (), traceview будет отображать цвет b; Но когда он работает (т. Е. Excl time), он будет рисовать цвет, и он будет рисовать панель немного выше, чем бара b. По крайней мере, это определенно, как все работает, когда вы увеличиваете масштаб; Если вы нажмете на функцию, соответствующую более высокой полосе, она будет класть скобки под небольшими барами рядом с ней, показывая, что родитель несет ответственность за все это; И родитель всегда отображается как более высокий бар.

  2. да :). Inclusive – это время, затраченное на выполнение функции или любой функции, вызываемой этой функцией; Эксклюзив – это «исключение вызываемых функций», и это просто время, затраченное на выполнение функции (или переход на нее / выход из нее).

  3. Только для верхнего уровня, который, я думаю, подразумевал; И даже тогда см. Ответ @ ron – это время использования процессора, а не время настенных часов. AsyncTasks запускается в основном потоке, и поэтому он будет включен где-то в разбивке по верхнему уровню. То же самое для обработчиков

  4. Ответил Эрик

  5. Нет, из-за округления / округления (т.е. 1,87% будут отображаться как 1,9%); Но сумма записей в «Эксклюзив» должна складываться до общего времени, показанного в верхнем правом углу, что совпадает с номером, рассчитанным для вашего вопроса (3)

  6. Ответил Эрик

Другое важное ноу-хау в графике traceview (как указано здесь ): время, отображаемое traceview, не является реальным временем настенных часов, но используется время процессора.

Например, уменьшая FPS, форма графика трассировки может не измениться, поскольку она не включает в себя холостые рабочие циклы. Поэтому при измерении производительности рекомендуется также запускать приложение в течение фиксированного времени (10 секунд, 60 секунд и т. Д.) И проверять, меньше ли времени, затраченного на 100% включительно.

Google только что выпустил замечательный курс по Udacity по производительности Android. В этом модуле есть прохождение Traceview , а также ссылка ниже видеомодуля в их руководство по курсу, которое охватывает использование Traceview на большой глубине. Рассмотрение этих вопросов ответит на большинство ваших вопросов. Я настоятельно рекомендую вам проверить это!