Я измеряю производительность своего приложения с помощью бездействия Nexus 4 на Android 4.2.2. Я вижу несколько вещей в отчетах, которые не имеют смысла для меня, и мне интересно, могут ли они быть ошибками systrace или кто-нибудь может знать о возможных возможных причинах этих симптомов.
1- Большая рекурсия в режиме исполненияТервералы в конце прогона
Ссылка на отчет - Посмотрите большую кривую в конце прогона (~ 18 с). Мое понимание заключалось в том, что performTraversals находится на уровне структуры, где он рисует один кадр пользовательского интерфейса. Поэтому для меня не имело смысла, что под ним могут быть рекурсивные звонки. Кроме того, поскольку я получаю такую экспоненциальную стеклизацию в конце прогона, я предположил, что это действительно просто дефект в systrace для данных в конце прогона. Возможно ли такое рекурсия? Что это значит?
2- выполнить рекурсию перекоса в середине прогона с длительным временем замены буфера
Ссылка на отчет - Интересное поведение, начинающееся с отметки 12 секунд. Когда я увидел что-то подобное в середине пробега, это заставило меня подумать, может быть, я не должен писать это. Кроме того, я потратил много времени на то, чтобы выяснить, что может объяснить такой длинный eglSwapBuffers/queueBuffer (мое приложение не использует openGL и просто использует фреймворк напрямую), когда коллега сказал мне просто игнорировать его потому что обменные буферы всегда будут мгновенными. Может ли быть больше? Есть ли что-то для расследования здесь?