项目作者: stefanos1316

项目描述 :
Exploiting Programming Languages Energy Consumption
高级语言:
项目地址: git://github.com/stefanos1316/Rosetta_Code_Research_MSR.git
创建时间: 2017-08-28T11:11:04Z
项目社区:https://github.com/stefanos1316/Rosetta_Code_Research_MSR

开源协议:

下载


Authors information

Name: Stefanos Georgiou

Affiliation: Athens University of Business and Economics

Contact details: sgeorgiou@aueb.gr, sgeorgiou@singularlogic.eu, and stefanos1316@gmai.com


Name: Maria Kechagia

Affiliation: Delft University of Technology


Name: Diomidis Spinellis

Affiliation: Athens University of Business and Economics


Description

This reposotory was build for research purpose on Energy-Delay-Product.
Our aim is to compare the energy consumption of different tasks writtern in a variety of programming languages.
In order to achieve our aim we used a dataset publicly available from Rosetta Code.
We found all the collected tasks implemented in different langauges from a Git repo.
Since Rosetta Code contains the amount of 655 programming languages we decicde to limit our scope and include only the most used
ones.
To this line, we collected the 14 most used languages found from tiobe index June 2017.
Thus, we developed a number of bash scripts to manage our dataset, compile, execute, and plot results out of the collected tasks.

Downloading

Since we are using a submodule in this repository we suggest the use of the following command:

  1. $ git clone --recursive https://github.com/stefanos1316/Rosetta-Code-Research.git

In case you used simple clone command, add the submdodules using the following commands inside the cloned repo.

  1. $ git submodule init
  2. $ git submodule update

How to Execute

First browse to Scripts directory and proceed as follows:

1) Execute the script.cleanAll in order to prepare the existing dataset and make it case insensitive by chaning all files from upper to lower case.
2) Execute the script.createNewDataSet to have a filtered dataset with all the selected tasks and programming languages that we will examine for this research.
3) Some of the Tasks cotains more that one implementation of the same languages, thus we had to manually drive through the directories and remove some of the
executables. In the case of Java we also had to change the .java files name since it had more than one file of a selected task.
4) Afterwards, we had to add additional code inside each file in order to force a task to run around a million of times (some tasks are so small and are
finishing faster than 1 second, thus our power analyzer cannot capture those results).
5) Execute the script.compileTasks in order to compile all tasks.
6) Execute the script.executeTasks[Remotly|Locally] in order to execute the tasks and collect results (in our case we used Watts Up Pro).
On running the script.executeTasksRemotly, it is necessary to have a remote host with ssh where the Watts Up Pro is connected, otherwise the script.executeTasksLocally can be executed without the need of the remote host.
7) Execute the script.createPlottableData that creates the file with all the results from all the measurements (Energy/Performance). In the end, this script will call the script.plotGrpahs that is responsible to create plot the graphs.
8) The script.plotGraphs is executed by the script.createPlottableData and can provide graphs for both performance and energy consumption. Moreover, there are some default setting found in the end of script.createPlottableData, if anyone would like to change them and plot using different configuration parameters.

Note: For more information for executing scripts add the —help command line argument.

server_boxplots_1647970605623.pdf
Normalized_Results_EDP_1_Normalized_EDP_1.txt_HeatMap_Logarithmic_Function_1647970629278.pdf
Normalized_Results_EDP_1_mobile_processor_HeatMap_Logarithmic_Function_1647970629321.pdf
Normalized_Results_EDP_1_server_processor_HeatMap_Logarithmic_Function_1647970629344.pdf
Normalized_Results_EDP_2_Normalized_EDP_2.txt_HeatMap_Logarithmic_Function_1647970629350.pdf
Normalized_Results_EDP_3_mobile_processor_HeatMap_Logarithmic_Function_1647970629369.pdf
Normalized_Results_EDP_3_server_processor_HeatMap_Logarithmic_Function_1647970629374.pdf
arm_boxplots_1647970629400.pdf
laptop_boxplots_1647970629404.pdf
server_boxplots_1647970629422.pdf
Embedded_boxplots_1647970630771.pdf
Laptop_boxplots_1647970630878.pdf
Server_boxplots_1647970630941.pdf
all_boxplots_1647970630975.pdf
arm_boxplots_1647970631036.pdf
boxplots_1647970631040.pdf
laptop_boxplots_1647970631186.pdf
server_boxplots_1647970631232.pdf
Normalized_Results_EDP_1_Normalized_EDP_1.txt_HeatMap_Logarithmic_Function_1647970509811.pdf
Normalized_Results_EDP_2_Normalized_EDP_2.txt_HeatMap_Logarithmic_Function_1647970509830.pdf
Normalized_Results_EDP_3_Normalized_EDP_3.txt_HeatMap_Logarithmic_Function_1647970509869.pdf
Normalized_Results_EDP_1_mobile_processor_HeatMap_Logarithmic_Function_1647970543563.pdf
Normalized_Results_EDP_2_mobile_processor_HeatMap_Logarithmic_Function_1647970543612.pdf
Normalized_Results_EDP_3_mobile_processor_HeatMap_Logarithmic_Function_1647970543669.pdf
Normalized_Results_EDP_1_server_processor_HeatMap_Logarithmic_Function_1647970575141.pdf
Normalized_Results_EDP_2_server_processor_HeatMap_Logarithmic_Function_1647970575172.pdf
Normalized_Results_EDP_3_server_processor_HeatMap_Logarithmic_Function_1647970575180.pdf
arm_boxplots_1647970605453.pdf
boxplots_1647970605489.pdf
laptop_boxplots_1647970605599.pdf
server_boxplots_1650693389021.pdf
laptop_boxplots_1650693387998.pdf
server_boxplots_1650693388018.pdf
Embedded_boxplots_1650693388767.pdf
Laptop_boxplots_1650693388805.pdf
Server_boxplots_1650693388851.pdf
all_boxplots_1650693388868.pdf
arm_boxplots_1650693388984.pdf
boxplots_1650693388986.pdf
laptop_boxplots_1650693388992.pdf
Normalized_Results_EDP_1_Normalized_EDP_1.txt_HeatMap_Logarithmic_Function_1650693387964.pdf
Normalized_Results_EDP_1_mobile_processor_HeatMap_Logarithmic_Function_1650693387967.pdf
Normalized_Results_EDP_1_server_processor_HeatMap_Logarithmic_Function_1650693387970.pdf
Normalized_Results_EDP_2_Normalized_EDP_2.txt_HeatMap_Logarithmic_Function_1650693387973.pdf
Normalized_Results_EDP_3_mobile_processor_HeatMap_Logarithmic_Function_1650693387976.pdf
Normalized_Results_EDP_3_server_processor_HeatMap_Logarithmic_Function_1650693387979.pdf
arm_boxplots_1650693387984.pdf
arm_boxplots_1650693361063.pdf
boxplots_1650693361111.pdf
laptop_boxplots_1650693361155.pdf
server_boxplots_1650693361214.pdf
Normalized_Results_EDP_1_server_processor_HeatMap_Logarithmic_Function_1650693338637.pdf
Normalized_Results_EDP_2_server_processor_HeatMap_Logarithmic_Function_1650693338647.pdf
Normalized_Results_EDP_3_server_processor_HeatMap_Logarithmic_Function_1650693338671.pdf
Normalized_Results_EDP_1_mobile_processor_HeatMap_Logarithmic_Function_1650693311404.pdf
Normalized_Results_EDP_2_mobile_processor_HeatMap_Logarithmic_Function_1650693311407.pdf
Normalized_Results_EDP_3_mobile_processor_HeatMap_Logarithmic_Function_1650693311431.pdf
Normalized_Results_EDP_1_Normalized_EDP_1.txt_HeatMap_Logarithmic_Function_1650693297891.pdf
Normalized_Results_EDP_2_Normalized_EDP_2.txt_HeatMap_Logarithmic_Function_1650693297904.pdf
Normalized_Results_EDP_3_Normalized_EDP_3.txt_HeatMap_Logarithmic_Function_1650693297920.pdf