THESIS
2015
xiii, 143 pages : illustrations ; 30 cm
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 analysis of mobile
applications' energy efficiency or execution performance. To bridge the gap, we
conducted two large-scale empirical studies of real-world energy and performance
bugs from popular Android applications. We studied the characteristics of these bugs
and identified several common causes of energy wast...[
Read more ]
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 analysis of mobile
applications' energy efficiency or execution performance. To bridge the gap, we
conducted two large-scale empirical studies of real-world 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
device sensors and wake locks are properly deactivated after use. We evaluated
GreenDroid using 14 popular open-source Android applications. GreenDroid successfully
located 13 real energy bugs in these applications and additionally found
two previously-unknown 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 evaluated PerfChecker with 39 popular and large-scale
Android applications (29 open-source and 10 commercial) and a widely-used library.
PerfChecker successfully detected 178 previously-unknown performance bugs, among
which 88 were quickly confirmed by developers and 20 critical ones were fixed soon
afterwards. We also confirmed via comparison experiments that fixing our detected
performance bugs can significantly improve the performance of the corresponding
applications.
Post a Comment