Over the last few years, the interest in the analysis of the energy consumption of Android applications has been increasing significantly. Indeed, there are a considerable number of studies which aim at analyzing the energy consumption in various ways, such as measuring/estimating the energy consumed by an application or block of code, or even detecting energy expensive coding patterns or API's.
Nevertheless, when it comes to actually improving the energy efficiency of an application, we face a whole new challenge, which can only be achieved through source code improvements that can take advantage of energy saving techniques. However, there is still a lack of information about such techniques and their impact on energy consumption.
In this paper, we analyze the impact of the memoization technique in the energy consumption of Android applications. We present a systematic study of the use of memoization, where we compare implementations of 18 method from different applications, with and without using memoization, and measure the energy consumption of both of them. Using this approach, we are able to characterize Android methods that should be memoized.
Our results show that using memoization can clearly be a good approach for saving energy. For the 18 tested methods, 13 of them decreased significantly their energy consumption, while for the remaining 5 we observed unpredictable behavior in 3 of them and an overall increase of energy consumption in the last 2. We also included a discussion about when is actually beneficial to use memoization for saving energy, and what is the expected percentage of gain/loss when memoization works and when it does not.