How Developers Detect and Fix Performance Bottlenecks in Android Apps - ICSME 2015 Online Appendix

This web page is a companion to our ICSME 2015 paper entitled "How Developers Detect and Fix Performance Bottlenecks in Android Apps".

1. Design of the study: Programming experience of survey participants




2. Tools -- Tools used by Android Developers to Detect Performance-related Issues

PurposeTool/Suite
Profiling-MonitoringMAT, TraceView, DDMS, Android Device Monitor, ADT, ADB, Strict Mode API, OpenGL Tracer, ADB profiler, Android Debug API, Heapdump, Surface Flinger, HProf, Dumpsys, Dmtracedump, Eclipse profiler, Systrace, Trepn, Valgring/Calgrind, Intel Studio, AT & T ARO, Emmagee, Procrank, Chrome trace tool, NewRelic, Adreno profiler, IntelliJ, LittleEye, Netbeans Profiler, Nvidia Nsight, Perf, VisualVM, High Performance C++ profiler, TOP, Linux process monitor, Acra, Charles Network Analyzer, Crashlytics
TestingRoboelectric, JUnit, Appium, Robotium, Xdotool+ Geniemotion, Robospock, Monkey, MonkeyRunner
DebuggingEclipse debugger, GDB, JDB, SQLITE Explain Query Plan, Nvidia Nsight
Static AnalysisSonar, Lint, FindBugs
GUI-based analysisHierarchy Viewer, Android overdraw visualizer, Surface flinger, OpenGL tracer
AnalyticsGoogleAnalytics, MintSplunk, Crashlytics, NewRelic
LoggingLogCat, Custom logging systems
OtherJenkins, Git Bisec, Android Battery Stats, Caliper


3. Results

> How developers detect performance bottlenecks in mobile Apps

The figure depicts how developers detect performance bottlenecks in mobile Apps. (Review/issue reports | Manual testing | Tools | Other strategies | None)



> Word Cloud of Android tools

The figure depicts Android tools used by the developers.



> Word Cloud of Android tools

The figure depicts the third-party tools used by the participants.



> The Taxonomy of Practices for Improving Performance Bottlenecks: Categories, Groups, and Answer Frequencies

CategoryGroup (frequency)
GUI laggingThreads (74), GUI optimization (47), Caching (40), Memory management (32), Network resources (17), Avoid blocking operations (5), Delegation (cloud) (4), On-demand resources (2), Others (3)
Memory bloatGUI optimization (45), Memory mgmt (30), Network resoruces (5), On-demand resources (2), Etc (2)
Energy leakDelegation (4), Reduce GPS calls (1), Wakelock (1)
GeneralDsign (74), Optimizations (68), Observation-driven analysis (61), Testing (24), Native code (13), APIs (10), DB-optimizations (5)
Unclear benefitNo reflection (1), Depend. Injection (1), Recursion (1)

The detailed information of the taxonomy is available as a Excel spreadsheet.

> The data (survey responses)


The detailed information of the survey responses is available as a Excel spreadsheet.

> Some Examples (bugs & commits)

> Some Examples (bugs without fix)


4. Authors

  • Mario Linares-Vásquez - The College of William and Mary, VA, USA.
    E-mail: mlinarev at cs dot wm dot edu
  • Christopher Vendome - The College of William and Mary, VA, USA.
    E-mail: cvendome at cs dot wm dot edu
  • Qi Luo - The College of William and Mary, VA, USA.
    E-mail: qluo at cs dot wm dot edu
  • Denys Poshyvanyk - The College of William and Mary.
    E-mail: denys at cs dot wm dot edu


5. Acknowledgements

We would like to thank all the open source Android developers who took time to participate in our survey. This work is supported in part by the NSF CCF-1218129 and NSF-1253837 grants. Any opinions, findings, and conclusions expressed herein are the authors' and do not necessarily reflect those of the sponsors.