Characterizing and detecting performance bugs for smartphone applications

Author(s): Y. Liu, C. Xu, S. Cheung
Venue: 36th International Conference on Software Engineering (ICSE 2014)
Date: 2014

Type of Experiement: Case Study
Sample Size: 70
Class/Experience Level: Undergraduate Student, Graduate Student
Data Collection Method: Observation, Project Artifact(s)


This paper looks at some of the most prevalent performance-related bugs in smartphone applications (specifically Android). The authors focus on eight different open source Android applications that are considered "large-scale and popular" including Firefox, Chrome, and My Tracks. They also discuss how they implemented and made successful use of "PerfChecker", a static code analyzer.

The primary performance bug types found during the study were GUI lagging, energy leak, and memory bloat. GUI lagging was by far the greatest represented, covering just over 75% of the 70 bugs that were categorized. At a lower level, the bugs were often a result of lengthy operations on the main (or UI) thread, doing unnecessary work and updating invisible GUI components, and "frequently invoked heavy-weight callbacks". The paper discusses how the bugs are more difficult to catch with traditional testing methods, and how a better way to generate sequences of user interactions is needed. It is also mentioned that an automated oracle is needed to catch when performance degrades.

Based on the study results, it was found that performance-related bugs took more time and effort to look into and fix than non-performance-related bugs. The authors suggest using performance management tools and profiling tools like Cleopatra (used by Firefox developers) to handle performance-related bugs more efficiently. There is also further discussion on how tools like PerfChecker can quickly spot issues like lengthy operations on the main thread. In conclusion, there are some very prominent performance bugs in smartphone applications which are harder to catch and take more effort to fix. The use of a static analyzer or similar tool can help greatly in finding these bugs.