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
