Comprehending Energy Behaviors of Java I/O APIs
Gustavo Pinto ,
Federal University of Pará, Brazil. –
APIs that implement I/O operations are the building blocks of many well-known, non-trivial software systems. These APIs are used for a great variety of programming tasks, from simple file management operations, to database communications and implementation of network protocols.Aims:Despite their ubiquity, there are few studies that focus on comprehending their energy behaviors in order to aid developers interested in building energy-conscious software systems. The goal of this work is two-fold. We first aim to characterize the landscape of the Java I/O programming APIs. After better comprehending their energy variations, our second goal is to refactor software systems that use energy inefficient I/O APIs to their efficient counterparts.Method: To achieve the first goal, we instrumented 22 Java micro-benchmarks that perform I/O operations. To achieve our second goal, we extensively experimented with three benchmarks already optimized for performance and five macro-benchmarks widely used in both software development practice and in software engineering optimization research.Results: Among the results, we found that the energy behavior of Java I/O APIs is diverse. In particular, popular I/O APIs are not always the most energy efficient ones. Moreover, we were able to create 22 refactored versions of the studied benchmarks, eight of which were more energy efficient than the original version. The(statistically significant) energy savings of the refactored versions varied from 0.87% up to 17.19%. More importantly, these energy savings stem from very simple refactorings (often touching less than five lines of code). Conclusions: Our work indicates that there is ample room for studies targeting energy optimization ofJava I/O APIs. Preprint: http://gustavopinto.org/lost+found/esem2019c.pdf (to appear at ESEM’2019).
Dr. Gustavo Pinto is an assistant professor at the Federal University of Pará, Brazil. He works in intersection between people and code. He has published more than 60 research works in top venues including ICSE, OOPSLA, CACM, ASE, ICSME, MSR, ESEM, and SANER. Dr. Pinto holds a PhD in Software Engineering from the Informatics Center at the Federal University of Pernambuco.
For more information: