Automated Analysis of Energy Efficiency and Execution Performance for Mobile Applications

PhD Thesis Proposal Defence


Title: "Automated Analysis of Energy Efficiency and Execution Performance 
for Mobile Applications"

by

Mr. Yepang LIU


Abstract:

Mobile applications' energy efficiency and performance have a vital impact 
on user experience. However, many mobile applications on market suffer 
from bugs that can cause significant energy waste and performance 
degradation, thereby losing their competitive edge. Locating these bugs is 
labor-intensive and thus automated diagnosis is highly desirable. 
Unfortunately, people have limited understanding of these bugs and there 
are no clear criteria to facilitate automated energy efficiency or 
performance analysis. To bridge the gap, we conducted two large-scale 
empirical studies of real energy and performance bugs from popular Android 
applications. We studied the characteristics of these bugs and identified 
several common causes of energy waste and performance degradation.

For energy bugs, we observed that (1) forgetting to deactivate device 
sensors or wake locks after use and (2) ineffectively utilizing sensory 
data can cause serious energy waste. To help developers detect such energy 
bugs, we proposed a dynamic analysis technique GreenDroid. GreenDroid 
automatically generates user interaction event sequences to systematically 
execute an Android application for state space exploration. During 
execution, it tracks the transformation, propagation and consumption of 
sensory data and analyzes whether the data are effectively utilized by the 
application to bring users perceptible benefits. It also closely monitors 
whether sensors and wake locks are properly deactivated after use. We 
evaluated GreenDroid using 13 popular open-source Android applications. 
GreenDroid successfully located 12 real energy bugs in these applications 
and additionally found two unreported bugs that were later confirmed by 
developers.

For performance bugs, we observed that (1) conducting lengthy operations 
in an application's main thread and (2) frequently invoking heavy-weight 
program callbacks can seriously reduce the responsiveness of an 
application. To help developers detect such performance bugs, we designed 
a light-weight static analysis technique PerfChecker. PerfChecker 
automatically scans an Android application's bytecode and identifies a set 
of checkpoints whose efficiency is critical. It then analyzes whether the 
checkpoints' implementation satisfies the efficiency rules formulated from 
our empirical study. We conducted two case studies to evaluate 
PerfChecker. In the first study, we applied PerfChecker to analyze 29 
popular open-source Android applications, which comprise 1.1 million lines 
of Java code. PerfChecker successfully detected 126 previously unknown 
performance bugs, among which 68 were quickly confirmed by developers and 
20 critical ones were fixed soon afterwards. In the second study, we 
applied PerfChecker to analyze 10 popular commercial Android applications 
and one widely-used library. PerfChecker also successfully located 52 
unreported performance bugs, of which 20 were confirmed by the 
corresponding developer teams.


Date:			Tuesday, 10 February 2015

Time:			10:30am - 12:30pm

Venue: 			Room 3494
			lifts 25/26

Committee Members:	Prof. Shing-Chi Cheung (Supervisor)
			Dr. Charles Zhang (Chairperson)
 		      	Dr. Sunghun Kim
 		      	Dr. Jogesh Muppala



**** ALL are Welcome ****