{'fraction_non_alphanumeric': 0.020833333333333332, 'fraction_numerical': 0.0, 'mean_word_length': 4.972081218274112, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Pervasive computing approach to energy management

We present a novel approach to energy management. This approach is a pervasive computing solution to the energy problem in mobile devices. Its pervasiveness arises from the fact that communication is used and viewed as an opportunity to save energy, whereby certain candidate sections of code (represented by basic program blocks, most likely loops) are outsourced from the mobile device on which they are executing, to a surrogate server machine with an infinite power source. As can be concluded, outsourcing code implies that the data involved in the computation will have to be transferred to and from the surrogate. This approach deviates from the traditional view of communication as a drain on the battery of a mobile device. 
The solution presented here is a compile-time solution and optimization, augmented by the necessary run-time support. The high-level source code is augmented by additional high-level code to intelligently (at run-time) allow the application running on the mobile device to outsource basic program blocks to a server. Both client and server applications are a byproduct of our approach, as the original source code is transformed into a client/server application where the client is installed on the mobile device and the server is stored on a surrogate machine. 
This approach uses a methodology from the domain of real-time systems to determine the number of loop iterations, and that facilitates a compile-time computing of executing each loop. We also gathered the necessary information about the size of the data involved in each loop. This allows for determining the cost for outsourcing each loop (in terms of the cost for communicating the data to the surrogate). Once both metrics (computation energy cost, and communication energy cost) have been determined, we can easily generate a code that allows the application to make the run-time decision of whether outsourcing is beneficial. This approach is a fine-grain approach to energy management, because it looks at basic program blocks (as opposed to certain predefined tasks or functions). For this system to allow the execution of the client/server application, the necessary run-time support was built to facilitate this behavior. Results showed significant levels of energy saving, using our benchmarks.