DiagDroid: Android performance diagnosis via anatomizing asynchronous executions

Abstract
Rapid UI responsiveness is a key consideration to Android app developers. However, the complicated concurrency model of Android makes it hard for developers to understand and further diagnose the UI performance. This paper presents DiagDroid, a tool specifically designed for Android UI performance diagnosis. The key notion of DiagDroid is that UI-triggered asynchronous executions contribute to the UI performance, and hence their performance and their runtime dependency should be properly captured to facilitate performance diagnosis. However, there are tremendous ways to start asynchronous executions, posing a great challenge to profiling such executions and their runtime dependency. To this end, we properly abstract five categories of asynchronous executions as the building basis. As a result, they can be tracked and profiled based on the specifics of each category with a dynamic instrumentation approach carefully tailored for Android. DiagDroid can then accordingly profile the asynchronous executions in a task granularity, equipping it with low-overhead and high compatibility merits. The tool is successfully applied in diagnosing 33 real-world open-source apps, and we find 14 of them contain 27 performance issues. It shows the effectiveness of our tool in Android UI performance diagnosis. The tool is open-source released online.
Funding Information
  • National Natural Science Foundation of China (61332010)
  • Research Grants Council of the Hong Kong Special Administrative Region (CUHK 14205214)
  • 2015 Microsoft Research Asia Collaborative Research Program (FY16-RES-THEME-005)
  • National Basic Research Program of China (2014CB347701)

This publication has 53 references indexed in Scilit: