What are Your Programming Language's Energy-Delay Implications?

Motivation: Even though many studies examine the energy efficiency of hardware and embedded systems, those that investigate the energy consumption of software applications are still limited, and mostly focused on mobile applications. As modern applications become even more complex and heterogeneous a need arises for methods that can accurately assess their energy consumption. Goal: Measure the energy consumption and run-time performance of commonly used programming tasks implemented in different programming languages and executed on a variety of platforms to help developers to choose appropriate implementation platforms. Method: Obtain measurements to calculate the Energy Delay Prod- uct, a weighted function that takes into account a task's energy consumption and run-time performance. We perform our tests by calculating the Energy Delay Product of 25 programming tasks, found in the Rosetta Code Repository, which are implemented in 14 programming languages and run on three different computer platforms, a server, a laptop, and an embedded system. Results: Compiled programming languages are outperforming the interpreted ones for most, but not for all tasks. C, C#, and JavaScript are on average the best performing compiled, semi-compiled, and interpreted programming languages for the Energy Delay Product, and Rust appears to be well-placed for i/o-intensive operations, such as file handling. We also find that a good behaviour, energy- wise, can be the result of clever optimizations and design choices in seemingly unexpected programming languages.

[1]  Ιωάννης Μανώλης,et al.  Οδηγός για το Raspberry Pi 3 Model B , 2017 .

[2]  Dan Grossman,et al.  EnerJ: approximate data types for safe and general low-power computation , 2011, PLDI '11.

[3]  Jácome Cunha,et al.  Energy efficiency across programming languages: how do energy, time, and memory relate? , 2017, SLE.

[4]  Luca Ardito,et al.  Energy Consumption Analysis of Algorithms Implementations , 2015, 2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM).

[5]  Rong Ge,et al.  High-performance, power-aware distributed computing for scientific applications , 2005, Computer.

[6]  Lisane B. de Brisolara,et al.  Analysis and Evaluation of the Android Best Practices Impact on the Efficiency of Mobile Applications , 2013, 2013 III Brazilian Symposium on Computing Systems Engineering.

[7]  Qijun Gu,et al.  Program energy efficiency: The impact of language, compiler and implementation choices , 2014, International Green Computing Conference.

[8]  Chiara Francalanci,et al.  Is software "green"? Application development environments and energy efficiency in open source applications , 2012, Inf. Softw. Technol..

[9]  M. Horowitz,et al.  Low-power digital design , 1994, Proceedings of 1994 IEEE Symposium on Low Power Electronics.

[10]  Victor Pankratius,et al.  Combining functional and imperative programming for multicore software: An empirical study evaluating Scala and Java , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[11]  Kerstin Eder Energy transparency from hardware to software , 2013, 2013 Third Berkeley Symposium on Energy Efficient Electronic Systems (E3S).

[12]  Qijun Gu,et al.  Using the Greenup, Powerup, and Speedup metrics to evaluate software energy efficiency , 2015, 2015 Sixth International Green and Sustainable Computing Conference (IGSC).

[13]  Gabriele Bavota,et al.  Mining energy-greedy API usage patterns in Android apps: an empirical study , 2014, MSR 2014.

[14]  Eleni Stroulia,et al.  The power of system call traces: predicting the software energy consumption impact of changes , 2014, CASCON.

[15]  Leo A. Meyerovich,et al.  Empirical analysis of programming language adoption , 2013, OOPSLA.

[16]  Joost Visser,et al.  Seflab: A lab for measuring software energy footprints , 2013, 2013 2nd International Workshop on Green and Sustainable Software (GREENS).

[17]  Abram Hindle,et al.  GreenMiner: a hardware based mining software repositories software energy consumption framework , 2014, MSR 2014.

[18]  Carlo A. Furia,et al.  A Comparative Study of Programming Languages in Rosetta Code , 2014, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[19]  Xinbo Chen,et al.  Android App Energy Efficiency: The Impact of Language, Runtime, Compiler, and Implementation , 2016, 2016 IEEE International Conferences on Big Data and Cloud Computing (BDCloud), Social Computing and Networking (SocialCom), Sustainable Computing and Communications (SustainCom) (BDCloud-SocialCom-SustainCom).