that are related to I/O operations. As a
results, they found that most of the energy consumed in free apps is related
to third-party advertisement modules
(which can be responsible for up to
75% of the overall energy consumed by
an app). Using a collaborative black-box approach, Oliner et al40 propose
a method for diagnosing anomalies,
estimating their severity, and identifying the device features that lead to
the anomaly. Using feedback received
by the proposed tool, end users improved their battery life by 21%.
We believe that debugging tools
will have the capability of inspecting the energy consumption of fine-grained program constructs during
runtime, as well as their common
ability to identify which value was attributed to a given variable. Debugging tools can go further and highlight
the CPU intensive lines of code, or the
memory-intensive methods, in a way
that developers can refactor them in
an energy-savvy manner. Novel energy-related testing and debugging tools
can mitigate the lack of tools.
Energy consumption is a ubiquitous
problem and the years to come will require developers to be even more aware
of it. However, developers currently do
not fully understand how to write, maintain, and evolve energy-efficient software systems. In this study we suggest
this is primarily due to two problems:
the lack of knowledge and the lack of
tools. With these problems in mind,
this article reviewed most of the recent
energy-related contributions in the software engineering community. We discuss how software energy consumption
research is evolving to mitigate these
two problems and, when appropriate,
we highlight key research gaps that
need better attention.
1. Abran, A., Bourque, P., Dupuis, R., and Moore, J. W.,
editors. Guide to the Software Engineering Body of
Knowledge (SWEBOK), 2001.
2. Aggarwal, K., Hindle, A., and Stroulia, E. GreenAdvisor:
A tool for analyzing the impact of software evolution
on energy consumption. In Proceedings of ICSME
(Sept. 2015), 311–320.
3. Aggar wal, K., Zhang, C., Campbell, J. C., Hindle, A.,
and Stroulia, E. The power of system call traces:
Predicting the software energy consumption impact of
changes. In Proceedings of CASCON, 2014, 219–233.
4. Banerjee A., Chong, L.K., Chattopadhyay, S., and
Roychoudhury, A.. Detecting energy bugs and hotspots in
mobile apps. In Proceedings of ESEC/FSE, 2014, 588–598.
5. Banerjee, A. and Roychoudhury, A. Automated re-
factoring of android apps to enhance energy-efficiency.
In Proceedings of MOBILESoft, 2016, 139–150.
6. Bruce, B.R., Petke, J., and Harman, M. Reducing
energy consumption using genetic improvement. In
Proceedings of GECCO, 2015, 1327–1334.
7. Carroll, A. and Heiser, G. An analysis of power
consumption in a smartphone. In Proceedings of
8. Chowdhury, S.A. and Hindle, A. Greenoracle: Estimating
software energy consumption with energy measurement
corpora. In Proceedings of MSR, 2016, 49–60.
9. Chowdhury, S. A., Sapra, V, and Hindle, A. Client-side
energy efficiency of HTTP/2 for web and mobile app
developers. In Proceedings of SANER, 2016, 529–540.
10. Corral, L., Georgiev, A.B., Sillitti, A., and Succi, G.
Method reallocation to reduce energy consumption:
anan implementation in android OS. In Proceedings of
SAC, 2014, 1213–1218.
11. Couto, M., Carcao, T., Cunha, J., Fernandes, J.P., and
Saraiva, J. Detecting anomalous energy consumption in
android applications. In Proceedings of SBLP, 2014, 77–91.
12. Cruz, L., Abreu, R., and Rouvignac, J.-N. Leafactor:
Improving energy efficiency of android apps via
automatic refactoring. In Proceedings of MobileSoft,
(Buenos Aires, Argentina, 2017).
13. Fernandes, B., Pinto, G., and Castor, F. Assisting
non-specialist developers to build energy-efficient
software. In Proceedings of the Companion to the 39th
International Conference on Software Engineering,
(Buenos Aires, Argentina, 2017).
14. Fraser, S., Murphy-Hill, E., Wild, W., Yoder, J., and
Zhu, B.Q. Going green with refactoring: Sustaining
the ‘worldwide virtual machine.’ In Proceedings of
OOPSLA, 2011, 171–174.
15. Gelenbe, E. and Caseau, Y. The impact of information
technology on energy consumption and carbon
emissions. Ubiquity, (June 2015) 1–15.
16. Hasan, S., King, Z., Hafiz, M., Sayagh, M., Adams, B.,
and Hindle, A. Energy profiles of Java collections
classes. In Proceedings of ICSE, 2016, 225–236.
17. Hindle, A., Wilson, A., Rasmussen, K., Barlow, E.J.,
Campbell, J. C., and Romansky, S. Greenminer: A
hardware based mining software repositories software
energy consumption framework. In Proceedings of
MSR, 2014, 12–21.
18. Jabbarvand, R., Sadeghi, A., Bagheri, H., and Malek,
S. Energy-aware test-suite minimization for android
apps. In Proceedings of ISSTA, 2016, 425–436.
19. Oliveira Jr., W. O. R., and Castor, F. A study on the
energy consumption of android app development
approaches. In Proceedings of MSR (Buenos Aires,
20. Kambadur, M. and Kim, M. A. An experimental
survey of energy management across the stack. In
Proceedings of OOPSLA, 2014, 329–344.
21. Kan, E. Y. Y. Energy efficiency in testing and regression
testing—A comparison of DVFS techniques. In
Proceedings of QSIC ‘ 13, 2013, 280–283.
22. Khalid, H., Shihab, E., Nagappan, M., and Hassan, A.E.
What do mobile app users complain about? IEEE
Software 32, 3 (2015), 70–77.
23. Kwon, Y. and Tilevich, E. Reducing the energy
consumption of mobile applications behind the scenes.
In Proceedings of ICSM, 2013, 170–179.
24. Li, D. and Halfond, W.G.J. An investigation into energy-
saving programming practices for android smartphone app
development. In Proceedings of GREENS 2014, 46–53.
25. Li, D., Hao, S., Gui, J., and Halfond, W.G.J. An
empirical study of the energy consumption of Android
applications. In Proceedings of ICSME, 2014,
26. Li, D., Hao, S., Halfond, W.G.J., and Govindan, R. Calculating
source line level energy information for android
applications. In Proceedings of ISS TA, 2013, 78–89.
27. Li, D., Jin, Y., Sahin, C., Clause, J., and Halfond, W. G. J.
Integrated energy-directed test suite optimization. In
Proceedings of ISS TA, 2014, 339–350.
28. Li, D., Lyu, Y., Gui, J., and Halfond, W. G.J. Automated
energy optimization of http requests for mobile
applications. In Proceedings of ICSE, 2016, 249–260.
29. Li, D., Tran, A. H., and Halfond, W. G. J. Making
web applications more energy efficient for OLED
smartphones. In Proceedings of ICSE, 2014, 527–538.
30. Lima, L. G., Soares-Neto, F., Lieuthier, P., Castor, F.,
Melfe, G., and Fernandes, J.P. Haskell in green land:
Analyzing the energy behavior of a purely functional
language. In Proceedings of SANER, 2016, 517–528.
31. Linares-Vasquez, M., Bavota, G., Bernal-Cardenas, C.,
Oliveto, R., Di Penta, M., and Poshyvanyk, D. Mining
energy-greedy api usage patterns in android apps: An
empirical study. In Proceedings of MSR, 2014, 2–11.
32. Linares-Vasquez, M., Bavota, G., Bernal-Cardenas, C.,
Oliveto, R., Di Penta, M., and Poshyvanyk, D. Optimizing
energy consumption of GUIs in android apps: A multi-
objective approach. In Proceedings of ESEC/FSE,
33. Liqat, U., et.al. Energy consumption analysis of
programs based on XMOS isa-level models. In
Proceedings of the 23rd International Symposium on
Logic-Based Program Synthesis and Transformation,
34. Liu, K., Pinto, G., and Liu, Y.D. Data-oriented
characterization of application-level energy
optimization. In Proceedings of FASE, 2015.
35. Malik, H., Zhao, P., and Godfrey, M. W. Going green: An
exploratory analysis of energy-related questions. In
Proceedings of MSR, 2015, 418–421.
36. Manotas, I., et al. An empirical study of practitioners’
perspectives on green software engineering. In
Proceedings of ICSE, 2016, 237–248.
37. Manotas, I., Pollock, L., and Clause, J. Seeds: A
software engineer’s energy-optimization decision
support framework. In Proceedings of ICSE, 2014,
38. Moura, I., Pinto, G., Ebert, F., and Castor, F. Mining energy-
aware commits. In Proceedings of MSR, (2015), 56–67.
39. Murphy-Hill, E., Zimmermann, T., and Nagappan, N.
Cowboys, ankle sprains, and keepers of quality: How
is video game development different from software
development? In Proceedings of ICSE, 2014, 1–11.
40. Oliner, A.J., Iyer, A.P., Stoica, I., Lagerspetz, E., and
Tarkoma, S. Carat: Collaborative energy diagnosis
for mobile devices. In Proceedings of the 11th ACM
Conference on Embedded Networked Sensor Systems,
2013, 10:1–10: 14.
41. Othman, M. and Hailes, S. Power conservation strategy
for mobile computers using load sharing. SIGMOBILE
Mob. Comput. Commun. Rev. 2, 1 (Jan. 1998), 44–51.
42. Pang, C., Hindle, A., Adams, B., and Hassan, A.E.
What do programmers know about software energy
consumption? IEEE Software 33, 3 (2016), 83–89.
43. Pathak, A., Hu, Y. C., and Zhang, M. Where is the energy
spent inside my app? Fine grained energy accounting
on smartphones with eprof. In Proceedings of
EuroSys, 2012, 29–42.
44. Pathak, A., Jindal, A., Hu, Y. C., and Midkiff, S.P. What
is keeping my phone awake? Characterizing and
detecting no-sleep energy bugs in smartphone apps.
In Proceedings of MobiSys, 2012, 267–280.
45. Pinto, G., Castor, F., and Liu, Y.D. Mining questions
about software energy consumption. In Proceedings
of MSR, 2014, 22–31.
46. Pinto, G., Castor, F., and Liu, Y.D. Understanding energy
behaviors of thread management constructs. In
Proceedings of OOPSLA, 2014, 345–360.
47. Pinto, G., Liu, K., Castor, F., and Liu, Y. D. A comprehensive
study on the energy efficiency of Java thread-safe
collections. In Proceedings of ICSME, 2016.
48. Pinto G., Soares-Neto, F., and Castor, F. Refactoring for
energy efficiency: A reflection on the state of the art.
In Proceedings of GREENS, 2015.
49. Ribic, H. and Liu, Y.D. Energy-efficient work-stealing
language runtimes. In Proceedings of ASPLOS, 2014,
50. Ribic, H. and Liu, Y.D. Aequitas: Coordinated energy
management across parallel applications. In
Proceedings of the 2016 International Conference on
Supercomputing, 2016, 4:1–4: 12.
51. Saborido, R., Arnaoudova, V., Beltrame, G., Khomh, F.,
and Antoniol, G. On the impact of sampling frequency
on software energy measurements. PeerJ PrePrints,
2015, 3: e1219.
Gustavo Pinto ( email@example.com) is an assistant professor
at the Federal University of Pará, Brazil.
Fernando Castor ( firstname.lastname@example.org) is an associate
professor at the Federal University of Pernambuco, Brazil.
©2017 ACM 0001-0782/17/12 $15.00.
Watch the authors discuss
their work in this exclusive