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
Purpose | Tool/Suite |
Profiling-Monitoring | MAT, 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 |
Testing | Roboelectric, JUnit, Appium, Robotium, Xdotool+ Geniemotion, Robospock, Monkey, MonkeyRunner |
Debugging | Eclipse debugger, GDB, JDB, SQLITE Explain Query Plan, Nvidia Nsight |
Static Analysis | Sonar, Lint, FindBugs |
GUI-based analysis | Hierarchy Viewer, Android overdraw visualizer, Surface flinger, OpenGL tracer |
Analytics | GoogleAnalytics, MintSplunk, Crashlytics, NewRelic |
Logging | LogCat, Custom logging systems |
Other | Jenkins, 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
Category | Group (frequency) |
GUI lagging | Threads (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 bloat | GUI optimization (45), Memory mgmt (30), Network resoruces (5), On-demand resources (2), Etc (2) |
Energy leak | Delegation (4), Reduce GPS calls (1), Wakelock (1) |
General | Dsign (74), Optimizations (68), Observation-driven analysis (61), Testing (24), Native code (13), APIs (10), DB-optimizations (5) |
Unclear benefit | No 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)
- An example of the threading practice in the repository of the Sgtpuzzle app (Sgtpuzzle app, Issue, Commit-1, Commit-2, Commit-3, Commit-4)
- An example of GUI lagging generated by screen update frequency in the PresureNet app (PresureNet app, Issue, Commit)
- An example of how to avoid memory blots in an Android app (Android app, Issue, Commit)
- An example of how micro-optimizations can improve performance in the Android-Universal-Image-Loader app (Android-Universal-Image-Loader app, Issue, Commit)
- An example of memory leak issue in the Android-Universal-Image-Loader app (Android-Universal-Image-Loader app, Issue, Commit)
- An example of the tradeoff between quality attributes in Novoda image-loader library (Novoda image-loader app, Issue, Commit)
- An example of GUI-related performance issue in Mupen64Plus-ae app (Mupen64Plus-ae app, Issue, Commit-1, Commit-2)
> Some Examples (bugs without fix)
- An example of the Video performance issue in Mupen64Plus-ae (Mupen64Plus-ae app, Issue)
- Another example of the Video performance issue in Mupen64Plus-ae (Mupen64Plus-ae app, Issue)
- An example of the Video plugin-related performance issue in Mupen64Plus-ae (Mupen64Plus-ae app, Issue)
- An example of the GUI-related performance issue in ownCloud Android app (ownCloud Android app, Issue)
- An example of the GPU-related performance issue in ownCloud Android app (ownCloud Android app, Issue)
- An example of the UI-related performance issue in ownCloud Android app (ownCloud Android app, Issue)
- An example of the GUI-related performance issue in Sgtpuzzle (Sgtpuzzle app, Issue)
- An example of the image caching issue in the Android-Universal-Image-Loader app (Android-Universal-Image-Loader app, Issue)
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