<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">On the Impact of PowerCap in Haskell, Java, and Python</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Luís</forename><surname>Maia</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Department of Informatics</orgName>
								<orgName type="institution">University of Minho</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">HasLab/INESC TEC</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Marta</forename><surname>Sá</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Department of Informatics</orgName>
								<orgName type="institution">University of Minho</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Inês</forename><surname>Ferreira</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Department of Informatics</orgName>
								<orgName type="institution">University of Minho</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Simão</forename><surname>Cunha</surname></persName>
							<email>simaopscunha@outlook.pt</email>
							<affiliation key="aff0">
								<orgName type="department">Department of Informatics</orgName>
								<orgName type="institution">University of Minho</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Luís</forename><surname>Silva</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Department of Informatics</orgName>
								<orgName type="institution">University of Minho</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Paulo</forename><surname>Azevedo</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Department of Informatics</orgName>
								<orgName type="institution">University of Minho</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">HasLab/INESC TEC</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">João</forename><surname>Saraiva</surname></persName>
							<email>saraiva@uminho.pt</email>
							<affiliation key="aff0">
								<orgName type="department">Department of Informatics</orgName>
								<orgName type="institution">University of Minho</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">HasLab/INESC TEC</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">On the Impact of PowerCap in Haskell, Java, and Python</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">22A2D1526F6E698E65F9CC8A8542FE23</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T20:06+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Energy Efficiency</term>
					<term>Programming Languages</term>
					<term>Benchmark</term>
					<term>PowerCap</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Historically, programming language performance focused on fast execution times. With the advent of cloud and edge computing, and the significant energy consumption of large data centers, energy efficiency has become a critical concern both for computer manufacturers and software developers. Despite the considerable efforts of the green software community in developing techniques and tools for analysing and optimising software energy consumption, there has been limited research on how imposing hardware-level energy constraints affects software energy efficiency. Moreover, prior research has demonstrated that the choice of programming language can significantly impact a program's energy efficiency. This paper investigates the impact of CPU power capping on the energy consumption and execution time of programs written in Haskell, Java, and Python. Our preliminary results analysing well-established benchmarks indicate that while power capping does reduce energy consumption across all benchmarks, it also substantially increases execution time. These findings highlight the trade-offs between energy efficiency and runtime performance, offering insights for optimising software under energy constraints.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Programming languages provide powerful mechanisms to improve the productivity of their programmers. Modern languages rely on powerful module and type systems, reusable libraries, IDE, testing frameworks, etc. Such mechanisms are built on top of advanced abstraction, thus relying on the language compiler to produce efficient code.</p><p>In the last century, good performance in programming languages was synonymous of fast code, that is to say, fast execution time. In this century, this reality has changed because the cost to run software became higher than the cost to build that same software <ref type="bibr" target="#b0">[1]</ref>. In our age of cloud/edge computing and large data centers the energy consumption of software is a key concern for big tech and computer manufacturer companies, programming language designers, and programmers. Software systems are implemented using programming languages. As shown in <ref type="bibr" target="#b1">[2]</ref>, the energy efficiency of program can be drastically influenced by programming language used to develop it.</p><p>Although the green software community has done a considerable work on developing techniques and tools to analyse and optimise the energy consumption of software systems. Such techniques already provide knowledge on the energy efficiency of data structures <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b3">4]</ref> and android language <ref type="bibr" target="#b4">[5]</ref>, the energy impact of different programming practices both in mobile <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b6">7,</ref><ref type="bibr" target="#b7">8]</ref> and desktop applications <ref type="bibr" target="#b8">[9,</ref><ref type="bibr" target="#b9">10]</ref>, the energy efficiency of applications within the same scope <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b11">12]</ref>, or even on how to predict energy consumption in several software systems <ref type="bibr" target="#b12">[13,</ref><ref type="bibr" target="#b13">14]</ref>, among several other works.</p><p>There is also recent work on analysing the energy efficiency of programming languages <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b1">2,</ref><ref type="bibr" target="#b15">16]</ref>, where 28 of the most known and used programming languages are ranked according their energy performance. This ranking shows very interesting results, namely that slower/faster software languages consume less/more energy. The energy efficiency ranking, however, was produced assuming no limit on the energy usage by the operating system nor the hardware that executed the programs written in the 28 languages. However, we know that by limiting energy consumption of hardware we can reduce energy consumption. For example, a driver when operating a car (the hardware) can reduce its fuel consumption by defining a limit on the engine Revolutions Per Minute (RPM). Thus, an interesting question that immediately arises is whether we can reduce the energy consumption of a program by just defining a limit on the energy used by the CPU. Energy consumption does not depend only on execution time, as shown in the equation 𝐸𝑛𝑒𝑟𝑔𝑦 = 𝑇𝑖𝑚𝑒 × 𝑃𝑜𝑤𝑒𝑟. In fact, this equation shows that we can reduce energy of program by reducing its execution time and/or the power it uses.</p><p>In this paper we analyse the impact of limiting the power of the CPU when executing programs in three different programming languages, namely, Haskell, Java and Python. 1  For each language we considered well established benchmark frameworks, namely NoFib for Haskell <ref type="bibr" target="#b16">[17]</ref>, DaCapo for Java <ref type="bibr" target="#b17">[18]</ref> and pyPerformance for Python. We executed each benchmark in two situations: with and without a limit on energy consumption. In both cases we monitored and analysed the performance of each benchmark considering energy consumption and execution time. Our very first results show that by defining a power cap we do reduce energy consumption in all benchmarks. On the contrary, the execution time of the three benchmarks increases significantly.</p><p>This paper is organised as follows: Section 2 presents the methodology we follow to conduct our study. It briefly presents the benchmarks, the use of the Intel's RAPL and RAPLCap energy framework, the calibration of the powercap and how we executed and measured the benchmarks.</p><p>In Section 3 we present and discuss the results of the three benchmarks. In Section 4 we present our conclusions.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Methodology</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">Benchmarks</head><p>In order to analyse the impact of limiting the energy consumption while executing Haskell, Java and Python programs, we consider well-established and widely used benchmark frameworks developed for those three programming languages. The benchmarks and the compilers/interpreters used in our study are:</p><p>• Haskell language (compiler ghc 9.4.8): The nofib Benchmark Suite of Haskell Programs <ref type="bibr" target="#b16">[17]</ref>.<ref type="foot" target="#foot_0">2</ref> • Java language (compiler: Java Openjdk 11.0.22): The DaCapo Benchmark suite <ref type="bibr" target="#b17">[18]</ref>, version 23.11-chopin. <ref type="foot" target="#foot_1">3</ref>• Python language (interpreter: python 3.12.0): The Python Performance Benchmark Suite, version 1.11.0.<ref type="foot" target="#foot_2">4</ref> </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">Energy Measurements and Cap via RAPL</head><p>For measuring the energy consumption, we used Intel's Running Average Power Limit (RAPL) tool <ref type="bibr" target="#b18">[19]</ref>, which is capable of providing accurate energy estimates at a very fine-grained level, as it has already been proven <ref type="bibr" target="#b19">[20]</ref>. RAPL has been used in many studies on green software and was the energy measurement framework used in defining the ranking of programming languages <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b15">16]</ref>. Moreover, the ranking of languages provides programs/scripts built on top of RAPL that makes very easy to execute and monitor the energy consumption of a (executable) program.</p><p>In our study we will reuse this (C-based) infrastructure to execute and monitor the benchmarks and their programs written in three languages.</p><p>Finally, RAPL also support a key ingredient for our study: the possibility of defining a power limit on the CPU while executing a program <ref type="bibr" target="#b20">[21]</ref>. In fact, RAPLCap<ref type="foot" target="#foot_3">5</ref> provides a C interface for managing Intel RAPL power caps. Thus, we have extended the ranking energy monitoring infrastructure to allow the execution of a program under a given power cap.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3.">RAPL's PowerCap calibration</head><p>The RAPL and RAPLCap can be configured with different values to limit the PowerCap of a specific CPU. Thus, when executing a program it is possible to define the (maximum) power used by the (intel) CPU. Different values for Power-Cap can be used. Moreover, different intel CPUs may have the lowest energy consumption by using different Power-Cap values. In order to know the value of the PowerCap that produces the lowest energy consumption in a specific CPU, we need to compute it. Thus, we consider a calibration phase where we execute with different RAPLcap values a computation intensive program and we compute the value that produce the most energy efficient execution <ref type="bibr" target="#b21">[22,</ref><ref type="bibr" target="#b22">23]</ref>.</p><p>Thus, we consider the following implementation of the Fibonacci number in the C language: In order to have significant energy and runtime measurements we execute this function to compute Fibonacci of 50. Furthermore, we executed (ten times) this function using specific power cap values.</p><p>The processor i7-7700hq has a TDP of 45Watts. With this in mind, there was a first set of power cap variables that went from -1 to 45 with a spacing of 5 between each value. The substantially better results were when power cap took a value between 5 and 20. To further analyse these results, a second attempt of trying to find the best power cap value was made, this time with values -1, 20 and all withing 5 and 15, where -1, which is when there is no power cap, and 20 served to compare results with the remaining power caps. In order to to make the results more robust, each iteration of a power cap was ran ten times, and were then averaged.</p><p>In figure <ref type="figure" target="#fig_0">1</ref> we confirm that the power cap that yields the best results for our purpose is power cap 12, as it proved to be the lowest energy consuming. From this moment, the only two power cap values that will in the following steps are -1 (No power cap) and 12 (with power cap).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.4.">Program Execution</head><p>As we mention before, we will use the ranking of programming languages infrastructure to execute an monitor the energy consumption of the three benchmarks. Such infrastructure has a key feature: there is no need to add intrusive code, for example calls to RAPL API, to the programs we would like to monitor energy consumption. This infrastructure includes a C program, named energy, that uses system calls to execute the unchanged programs while measuring the energy and time consumption via call to RAPL (and the time library). The overhead caused by the usage of a system call is insignificant as shown in <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b23">24,</ref><ref type="bibr" target="#b24">25]</ref>.</p><p>Thus, to analyse the energy consumption of the benchmarks, we just use the benchmarks original makefiles to call the language compilers/interpreters with the defined optimisation's flags. Then, we use the energy C program to execute each of the executable program of each benchmark. This program is called from the command line as follows: sudo $ { c u s t o m _ p a t h } / RAPL / e n e r g y " . / b e n c h m a r k _ e x e c u t a b l e " $ ( b e n c h m a r k _ l a n g u a g e ) $ ( benchmark ) $ ( NTIMES ) $ ( PowerCap ) $ Its first argument is the executable program (of each benchmark) to be executed and monitored. The following two arguments are for naming purposes in the (csv) results output. Next argument is the number of runs for each program. The final argument is the value of the power cap (-1 or 12, as mentioned before).</p><p>In our study each benchmark's program was executed with and without power cap. Each program was executed a total of 10 times to grant a good starting set of results. Moreover, between each iteration, a cool down to the aforementioned mean CPU temperature is taken place to make sure each benchmark execution starts at the same CPU temperature. In the ranking of programming <ref type="bibr" target="#b1">[2]</ref> it was used a 1 second sleep between executions. That may not be enough for the CPU to be at the same temperature at each execution <ref type="bibr" target="#b25">[26]</ref>.</p><p>In order to make sure every iteration of each benchmark starts on equal grounds, the mean temperature of the CPU is taken, and after every run of a benchmark a cooling process is executed until the temperature of the CPU cools down to the point of the mean temperature. Once the CPU is back to the mean temperature, it is able to execute another benchmark. As a consequence, each execution of a program starts with the CPU at the same temperature.</p><p>To obtain the mean temperature of the CPU, the library lm-sensors 6 was used in the energy C program.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Results</head><p>All studies were conducted on a desktop with the following specifications: Linux Ubuntu 2.04.4 LTS operating system, kernel version 4.8.0-22-generic, with 32GB of RAM, a Haswell Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Treatment of the datasets</head><p>The RAPL framework is supported by all recent intel CPU architectures. However, not all intel architectures support the four energy estimations provided by RAPL <ref type="bibr" target="#b18">[19]</ref>, namely Core, DRAM, GPU and Package. In the intel architecture we conducted our studies, only the Core and Package estimations were available. Because the package estimation includes the consumption of the Core, GPU and other electronic devices on the chip, we will use this measurement as a reliable indication of the energy consumption of the CPU.</p><p>The energy monitoring C program developed for the energy ranking of languages and that we are reusing in our study, however, produces three more measurements: execution time, memory consumption and temperature. Time and (peak) memory consumption are provided by the linux operating system. The temperature measurement, provided by the lm-sensors C library, gives the value of the temperature of the CPU after the program execution. Thus it provides an indication of the energy dissipated as heat by the CPU. Thus, every single execution of a benchmark program produces five measurements: core, package, time, memory and temperature.</p><p>In our study we execute each benchmark program 10 times. In fact, we run each program 20 times: 10 times with power cap and 10 times without power cap. We also used box plots to analyse outliers. These box plots showed that the Java and Haskell benchmarks do not have outliers and although Python benchmarks have outliers they are not relevant in terms of number or value.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Haskell nofib Benchmark</head><p>To evaluate the impact of power cap on the variables Package and Time we started by creating two datasets: one with all the measurements of Haskell benchmarks without power cap and another with all the measurements of the Haskell benchmarks with a power cap of 12. Figure <ref type="figure" target="#fig_3">2</ref> presents the energy and runtime measurements for each program of the nofib benchmark. 7 Thus, for each program we associate two bars: energy (in joules) on the left and runtime (in seconds) on the right. Moreover, each bar uses two colours to indicate the use or not of power cap.</p><p>As we can observe in figure <ref type="figure" target="#fig_3">2</ref>, all Haskell programs consume less energy when executed with power cap (dark blue bar) when compared to the same program executed without a power cap. We can also see that power cap has a considerable impact on execution time: all programs increase their execution time when using power cap (green bar).</p><p>Figure <ref type="figure" target="#fig_1">3</ref> shows in more detail the energy reduction obtained by each benchmark program with power cap. The reduction on energy consumption comes at a price: the increase in execution time. Indeed, figure <ref type="figure" target="#fig_2">4</ref> shows negative results for execution time, only. Thus, meaning that every benchmark had a worse execution time with a power cap. The average, maximal an minimal increase in execution time are the following: 7 Due to scale issues which will make it difficult to see the results in figure <ref type="figure" target="#fig_3">2</ref>, we omit here the hartel program. That program, however, is included in the figure <ref type="figure" target="#fig_6">17</ref> available in appendix. Besides analysing the impact of the power cap in execution time and energy consumption and the gain in this two aspects, we decided that it would be interesting to analyse how the values of one column influence the values of other columns. To do so we used a correlation matrix. A correlation matrix is a statistical tool that shows how strong and in what direction two or more variables are related. The correlation coefficient ranges from -1 to +1, where -1 means a perfect negative correlation, +1 means a perfect positive correlation, and 0 means there is no correlation between the variables. Another aspect that we considered interesting to explore was how the power cap affects the relation between execution time and energy consumption. To do so we used the scatter plot presented in figure <ref type="figure" target="#fig_5">6</ref>: In figure <ref type="figure" target="#fig_5">6</ref> we observe that we have less energy consumption per time unit when using the power cap. Besides, we can once again confirm that the energy consumption and the execution time are positively correlated.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Java DaCapo Benchmark</head><p>The DaCapo benchmark, in its version 23.11-chopin, consists of 20 real-world, open-source client-side Java benchmarks. We executed each of this benchmarks with and without power cap. Figure <ref type="figure" target="#fig_6">7</ref> shows the energy and runtime of each DaCapo program. As we did for nofib, for each DaCapo program we associate two bars: energy (in joules) on the left and runtime (in seconds) on the right. Moreover, each bar uses two colours to indicate the use or not of power cap.</p><p>Figure <ref type="figure" target="#fig_7">8</ref> clearly shows that the use of power cap does decreases energy consumption, on average a 23.4% while increasing runtime, on average 101.1%, as shown in figure <ref type="figure" target="#fig_8">9</ref>. This is the case for each of the 20 DaCapo programs, very much like in the nofib benchmark.</p><p>To have a better understanding on the impact that power cap has on energy consumption, we calculated the gain in percentage for each benchmark. The results are presented in figure <ref type="figure" target="#fig_7">8</ref>. where the average, maximal and minimal values of energy consumption reduction are:</p><p>• Average gain: 23.4%</p><p>• Maximal gain: 37.0%</p><p>• Minimal gain: 11.9%</p><p>The execution time of DaCapo benchmarks increases when using a power cap, as detailed in figure <ref type="figure" target="#fig_8">9</ref>. In average the runtime in DaCapo increases 100%.</p><p>• Average loss: 101.1%</p><p>• Maximal loss: 186.4%</p><p>• Minimal loss: 14.6%</p><p>In order to analyse the correlation between our five measurements, we use the correlation matrix presented in figure <ref type="figure" target="#fig_9">10</ref>. Lastly we analyse the relation between Package and Time with and without power cap using a scatter plot and the results are displayed in figure <ref type="figure" target="#fig_10">11</ref>, By taking a look at figure <ref type="figure" target="#fig_10">11</ref> we can conclude that there is less energy consumption per time unit with the use of power cap. Moreover, with the use of power cap the columns present a stronger correlation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4.">Python pyPerformance Benchmark</head><p>The pyPerformance benchmark consists of 75 programs, which we executed with and without power cap by our energy framework. Of these 75 programs, only 57 were used due to some benchmarks requiring a python version above the executed one. This was the case when running python 3.8 on benchmarks that required python 3.10 or above. To be able to compare each compiler with each other, these benchmarks results in other version were discarded. Figure <ref type="figure" target="#fig_12">12</ref> shows the energy consumption and runtime for each python program.</p><p>As we can see in figure <ref type="figure" target="#fig_12">12</ref> with the use of power cap there is a decrease in the energy consumption of all programs. This is shown in more detailed in figure <ref type="figure" target="#fig_1">13</ref>. Once we studied the impact of power cap on energy consumption and execution time, we opt to analyse the relations between different columns values. And we did so using a correlation matrix presented in figure <ref type="figure" target="#fig_4">15</ref> Figure <ref type="figure" target="#fig_4">15</ref>: Correlation matrix for Python benchmarks version 3.12.</p><p>By analysing the correlation matrix presented above we can conclude that the two columns that present higher positive correlation are Core and Package followed by Time and Package and Time and Core. Is also relevant to mention that the columns Temperature and PowerLimit are negatively related once this relation in the correlation matrix presents such a small number.</p><p>Lastly we analysed the relation between energy consumption and execution time, and the results are presented in figure <ref type="figure" target="#fig_5">16</ref> Figure <ref type="figure" target="#fig_5">16</ref>: Correlation between Package and Time with and without power cap for Python benchmarks version 3.12.  After analysing figure <ref type="figure" target="#fig_5">16</ref> we can conclude that we have less energy consumption per time unit when using the power cap. Besides that, once again we can confirm that energy consumption and execution time are positively correlated.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.5.">Discussion</head><p>When comparing the correlation between Package and Time in Java and Haskell benchmarks, considering both correlation matrices, one can conclude that correlation is stronger in the Haskell benchmarks.</p><p>From table <ref type="table" target="#tab_0">1</ref> we can observe that in terms of energy consumption, regardless the implementation language, every program improved their energy consumption. In fact, Python demonstrates the highest average energy gain (35.3%), followed by Java (23.4%) and Haskell (20.0%). Python also demonstrates a higher maximum energy gain (60.4%), followed by Java (37.0%) and Haskell (25.4%). In terms of minimal energy gain, Python has the highest (17.9%) compared to Haskell (15.4%) and Java (11.9%).</p><p>The impact on the runtime, Java shows a significant average runtime loss (101.1%), indicating that the programs are running much slower, on average, when comparing to Haskell (53.7%) and Python (21.5%). In fact, the maximum runtime loss is higher in Java (186.4%), followed by Haskell (60.3%) and Python (54.8%). In terms of minimal runtime loss, Haskell has the highest (38.0%) compared to Java (14.6%) and Python, which had a gain of 22.6%.</p><p>In contrast to the majority of the benchmarks, when a power cap is set, certain python benchmarks' runtime decreased, along with their energy consumption. The most notorious are bm_concurrent_imap, a concurrent model communication benchmark, which uses the Pool that handles CPU bound job and ThreadPool that handles IO bound jobs, from the multiprocessing.pool library. Also,bm_logging is a simple message logging benchmark, that utilises the inmemory text stream function StringIO from the io library. As a final example, we have bm_gc_collect benchmark, a node connected to another node traversal benchmark that is ran with n cycles, resembling a linked list collection traversal. The first two mentioned benchmarks handle IO related jobs. Thus, one could argue that execution of these type of jobs are more sensible to a power cap when compared to all the benchmarks. Hence, further testing and analysis is required to fully understand the reason behind these unexpected results.</p><p>In summary, Python shows the most balance performance with substantial energy gains and the potential for runtime reductions. However, Java programs tend to have a higher runtime loss, indicating a trade-off where energy savings may come at the cost of significantly increasing execution time. Also, Haskell shows a moderate performance in both energy gains and runtime losses, making it a middle ground between Python and Java in this analysis.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Conclusions</head><p>This paper presented a study on the impact of defining a power cap in three well-established benchmarks: nofib in Haskell, DaCapo in Java, and pyPerformance in Python. We executed all programs in these three benchmarks with and without defining a power cap.</p><p>Our first results show that power cap consistently decrease the energy consumption of programs written in all three languages. In average we obtained energy reductions of 20% in Haskell, 23% in Java, and 35% in Python. This energy reduction comes at a price: in all languages the execution times increases: 22% in Python, 54% in Haskell, and 101% in Java! Although Python seems to profit more from power cap it is worth to notice that Python is known for having poor runtime and energy consumption performances <ref type="bibr" target="#b1">[2]</ref>, and the speedup/greenup that achieves with power cap does not directly translate to speed/greenness.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Power Cap Impact on Fibonacci's Energy Consumption.</figDesc><graphic coords="2,309.59,65.61,213.67,103.38" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Reduction in energy consumption (package) with the use of power cap for Haskell benchmarks. The green, red and dark red lines indicate the average, maximal and minimal energy gains. The precise values are: • Average gain: 20.0% • Maximal gain: 25.4% • Minimal gain: 15.4%</figDesc><graphic coords="3,309.59,322.96,213.68,88.93" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: Increase in time with the use of power cap for Haskell benchmarks.</figDesc><graphic coords="3,309.59,584.37,213.67,88.53" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Energy consumption (left bar/legend) and execution time (right bar/legend) for each nofib benchmark program executed with and without power cap.</figDesc><graphic coords="4,72.00,65.60,451.27,267.82" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: Correlation matrix for HaskellBy analysing the correlation matrix presented in figure5, we can conclude that the two columns that present higher</figDesc><graphic coords="4,82.69,551.76,192.31,162.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: Correlation between Package and Time with and without power cap.</figDesc><graphic coords="4,309.59,522.01,213.68,110.68" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 7 :</head><label>7</label><figDesc>Figure 7: Energy consumption (left bar/legend) and execution time (right bar/legend) for each DaCapo benchmark program executed with and without power cap.</figDesc><graphic coords="5,135.18,65.60,324.92,193.16" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Figure 8 :</head><label>8</label><figDesc>Figure 8: Reduction in energy consumption (package) with the use of power cap for Java benchmarks.</figDesc><graphic coords="5,72.00,499.85,213.67,88.53" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Figure 9 :</head><label>9</label><figDesc>Figure 9: Increase in Time with the use of power cap for Java benchmarks.</figDesc><graphic coords="5,309.59,307.17,213.67,88.53" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_9"><head>Figure 10 :</head><label>10</label><figDesc>Figure 10: Correlation matrix for Java benchmarks.</figDesc><graphic coords="5,330.96,550.59,192.31,162.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_10"><head>Figure 11 :</head><label>11</label><figDesc>Figure 11: Correlation between Package and Time with and without power cap for Java DaCapo benchmarks.</figDesc><graphic coords="6,72.00,152.09,213.68,110.68" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_11"><head>Figure 13 :Figure 14 :</head><label>1314</label><figDesc>Figure 13: Reduction in energy consumption (package) with the use of power cap for Python benchmarks. In fact, in average the use of power cap reduces energy consumption in 35%! • Average gain: 35.3% • Maximal gain: 60.4% • Minimal gain: 17.9%In terms of runtime, however, the results are different. The red colour shown in several programs of figure12do indicate that some python programs execute faster when a power cap is defined!</figDesc><graphic coords="6,72.00,524.70,213.68,89.96" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_12"><head>Figure 12 :</head><label>12</label><figDesc>Figure 12: Energy consumption (left bar/legend) and execution time (right bar/legend) for each pyPerformance program executed with and without power cap.</figDesc><graphic coords="7,72.00,65.61,451.27,268.05" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="10,72.00,269.31,451.27,267.82" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1</head><label>1</label><figDesc>Overall Results</figDesc><table><row><cell>Gain And Loss</cell><cell>Haskell</cell><cell>Java</cell><cell>Python</cell></row><row><cell>average energy gain</cell><cell>20.0%</cell><cell>23.4 %</cell><cell>35.3%</cell></row><row><cell>maximal energy gain</cell><cell>25.4%</cell><cell>37.0 %</cell><cell>60.4%</cell></row><row><cell>minimal energy gain</cell><cell>15.4%</cell><cell>11.9 %</cell><cell>17.9%</cell></row><row><cell>average runtime loss</cell><cell>53.7%</cell><cell>101.1%</cell><cell>21.5%</cell></row><row><cell>maximal runtime loss</cell><cell>60.3%</cell><cell>186.4%</cell><cell>54.8%</cell></row><row><cell>minimal runtime loss</cell><cell>38.0%</cell><cell>14.6 %</cell><cell>-</cell></row><row><cell>maximal runtime gain</cell><cell>-</cell><cell>-</cell><cell>22.6%</cell></row><row><cell>no. programs that</cell><cell>0</cell><cell>0</cell><cell>0</cell></row><row><cell>increased energy</cell><cell></cell><cell></cell><cell></cell></row><row><cell>no. programs that</cell><cell>0</cell><cell>0</cell><cell>22</cell></row><row><cell>decreased runtime</cell><cell></cell><cell></cell><cell></cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_0">https://gitlab.haskell.org/ghc/nofib. Version available on January,2024.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_1">https://www.dacapobench.org/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_2">https://github.com/python/pyperformance</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_3">https://github.com/powercap/raplcap</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_4">https://github.com/lm-sensors/lm-sensors</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgements</head><p>This work is partially supported by CERCIRAS -Connecting Education and Research Communities for an Innovative Resource Aware Society -COST Action CA19135 funded by COST Association.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><forename type="first">W</forename><surname>Voegels</surname></persName>
		</author>
		<ptr target="https://youtu.be/UTRBVPvzt9w?t=3718" />
		<title level="m">Keynote at AWS re:Invent 2023</title>
				<imprint>
			<date type="published" when="2023">2023. 2024-05-19</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Energy efficiency across programming languages: how do energy, time, and memory relate?</title>
		<author>
			<persName><forename type="first">R</forename><surname>Pereira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Couto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Ribeiro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Rua</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cunha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Fernandes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Saraiva</surname></persName>
		</author>
		<idno type="DOI">10.1145/3136014.3136031</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2017</title>
				<meeting>the 10th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2017<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="256" to="267" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">The influence of the java collection framework on overall energy consumption</title>
		<author>
			<persName><forename type="first">R</forename><surname>Pereira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Couto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Saraiva</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cunha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">A P</forename><surname>Fernandes</surname></persName>
		</author>
		<idno type="DOI">10.1145/2896967.2896968</idno>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 5th Int. Workshop on Green and Sustainable Software, GREENS &apos;16</title>
				<meeting>of the 5th Int. Workshop on Green and Sustainable Software, GREENS &apos;16</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="15" to="21" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Energy profiles of java collections classes</title>
		<author>
			<persName><forename type="first">S</forename><surname>Hasan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>King</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Hafiz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Sayagh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Adams</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Hindle</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 38th Int. Conf. on Software Engineering</title>
				<meeting>of the 38th Int. Conf. on Software Engineering</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="225" to="236" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">A study on the energy consumption of android app development approaches</title>
		<author>
			<persName><forename type="first">W</forename><surname>Oliveira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Oliveira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Castor</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 14th International Conference on Mining Software Repositories</title>
				<meeting>the 14th International Conference on Mining Software Repositories</meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="42" to="52" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">An investigation into energysaving programming practices for android smartphone app development</title>
		<author>
			<persName><forename type="first">D</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">G J</forename><surname>Halfond</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 3rd International Workshop on Green and Sustainable Software (GREENS)</title>
				<meeting>the 3rd International Workshop on Green and Sustainable Software (GREENS)</meeting>
		<imprint>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Initial explorations on design pattern energy usage</title>
		<author>
			<persName><forename type="first">C</forename><surname>Sahin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Cayci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><forename type="middle">L M</forename><surname>Gutierrez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Clause</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Kiamilev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Pollock</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Winbladh</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Green and Sustainable Software (GREENS), 2012 1st Int. Workshop on, IEEE</title>
				<imprint>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="55" to="61" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Mining energy-greedy api usage patterns in android apps: an empirical study</title>
		<author>
			<persName><forename type="first">M</forename><surname>Linares-Vásquez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Bavota</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Bernal-Cárdenas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Oliveto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Di Penta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Poshyvanyk</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 11th Working Conf. on Mining Software Repositories</title>
				<meeting>of the 11th Working Conf. on Mining Software Repositories</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="2" to="11" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">How do code refactorings affect energy usage?</title>
		<author>
			<persName><forename type="first">C</forename><surname>Sahin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Pollock</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Clause</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of 8th ACM/IEEE Int. Symposium on Empirical Software Engineering and Measurement</title>
				<meeting>of 8th ACM/IEEE Int. Symposium on Empirical Software Engineering and Measurement</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page">36</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Helping programmers improve the energy efficiency of source code</title>
		<author>
			<persName><forename type="first">R</forename><surname>Pereira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Carção</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Couto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cunha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Fernandes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Saraiva</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICSE-C.2017.80</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 39th International Conference on Software Engineering Companion, ICSE-C &apos;17</title>
				<meeting>the 39th International Conference on Software Engineering Companion, ICSE-C &apos;17</meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="238" to="240" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Greenoracle: estimating software energy consumption with energy measurement corpora</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Chowdhury</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Hindle</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 13th International Conference on Mining Software Repositories</title>
				<meeting>the 13th International Conference on Mining Software Repositories</meeting>
		<imprint>
			<publisher>MSR</publisher>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="page" from="49" to="60" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Ecodroid: An approach for energy-based ranking of android apps</title>
		<author>
			<persName><forename type="first">R</forename><surname>Jabbarvand</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Sadeghi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Garcia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Malek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Ammann</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of 4th Int. Workshop on Green and Sustainable Software, GREENS &apos;15</title>
				<meeting>of 4th Int. Workshop on Green and Sustainable Software, GREENS &apos;15</meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="8" to="14" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Estimating mobile application energy consumption using program analysis</title>
		<author>
			<persName><forename type="first">S</forename><surname>Hao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">G J</forename><surname>Halfond</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Govindan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 2013 Int. Conf. on Software Engineering, ICSE &apos;13</title>
				<meeting>of the 2013 Int. Conf. on Software Engineering, ICSE &apos;13</meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="92" to="101" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Products go green: Worst-case energy consumption in software product lines</title>
		<author>
			<persName><forename type="first">M</forename><surname>Couto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Borba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cunha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Fernandes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Pereira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Saraiva</surname></persName>
		</author>
		<idno type="DOI">10.1145/3106195.3106214</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 21st International Systems and Software Product Line Conference -Volume A, SPLC &apos;17</title>
				<meeting>the 21st International Systems and Software Product Line Conference -Volume A, SPLC &apos;17<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="84" to="93" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Towards a green ranking for programming languages</title>
		<author>
			<persName><forename type="first">M</forename><surname>Couto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Pereira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Ribeiro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Rua</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Saraiva</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Programming Languages: 21st Brazilian Symposium, SBLP 2017</title>
				<meeting><address><addrLine>Fortaleza, Brazil</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2017-09">September, 2017. 2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Ranking programming languages by energy efficiency</title>
		<author>
			<persName><forename type="first">R</forename><surname>Pereira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Couto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Ribeiro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Rua</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cunha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Fernandes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Saraiva</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.scico.2021.102609</idno>
	</analytic>
	<monogr>
		<title level="j">Science of Computer Programming</title>
		<imprint>
			<biblScope unit="volume">205</biblScope>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">The nofib benchmark suite of haskell programs</title>
		<author>
			<persName><forename type="first">W</forename><surname>Partain</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Functional Programming</title>
				<editor>
			<persName><forename type="first">J</forename><surname>Launchbury</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">P</forename><surname>Sansom</surname></persName>
		</editor>
		<meeting><address><addrLine>Glasgow; London, London</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1992">1992. 1993</date>
			<biblScope unit="page" from="195" to="202" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">The DaCapo benchmarks: Java benchmarking development and analysis</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">M</forename><surname>Blackburn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Garner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Hoffman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Khan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">S</forename><surname>Mckinley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Bentzur</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Diwan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Feinberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Frampton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">Z</forename><surname>Guyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Hirzel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Hosking</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Jump</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Lee</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">E B</forename><surname>Moss</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Phansalkar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Stefanović</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Vandrunen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Dincklage</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Wiedermann</surname></persName>
		</author>
		<idno type="DOI">10.1145/1167473.1167488</idno>
		<idno>doi:</idno>
		<ptr target="http://doi.acm.org/10.1145/1167473.1167488" />
	</analytic>
	<monogr>
		<title level="m">OOPSLA &apos;06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications</title>
				<meeting><address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="169" to="190" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Dimitrov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Strickland</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S.-W</forename><surname>Kim</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Kumar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Doshi</surname></persName>
		</author>
		<ptr target="Ac-cessed:2015-" />
		<title level="m">Intel® power governor</title>
				<imprint>
			<date type="published" when="2015-10-12">2015. 10-12</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Rapl in action: Experiences in using rapl for power measurements</title>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">N</forename><surname>Khan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Hirki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Niemi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">K</forename><surname>Nurminen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Ou</surname></persName>
		</author>
		<idno type="DOI">10.1145/3177754</idno>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Model. Perform. Eval. Comput. Syst</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">CoPPer: Soft real-time application performance using hardware power capping</title>
		<author>
			<persName><forename type="first">C</forename><surname>Imes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Zhao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Hoffmann</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICAC.2019.00015</idno>
	</analytic>
	<monogr>
		<title level="m">IEEE International Conference on Autonomic Computing (ICAC)</title>
				<imprint>
			<date type="published" when="2019">2019. 2019</date>
			<biblScope unit="page" from="31" to="41" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Extended investigation of performance-energy trade-offs under power capping in hpc environments</title>
		<author>
			<persName><forename type="first">A</forename><surname>Krzywaniak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Czarnul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Proficz</surname></persName>
		</author>
		<idno type="DOI">10.1109/HPCS48598.2019.9188149</idno>
	</analytic>
	<monogr>
		<title level="m">2019 International Conference on High Performance Computing &amp; Simulation (HPCS)</title>
				<imprint>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="440" to="447" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Depo: A dynamic energy-performance optimizer tool for automatic power capping for energy efficient highperformance computing</title>
		<author>
			<persName><forename type="first">A</forename><surname>Krzywaniak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Czarnul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Proficz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SOFTWARE-PRACTICE &amp; EXPERIENCE</title>
		<imprint>
			<biblScope unit="volume">52</biblScope>
			<biblScope unit="page" from="2598" to="2634" />
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Measuring energy consumption for short code paths using RAPL</title>
		<author>
			<persName><forename type="first">M</forename><surname>Hähnel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Döbel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Völp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Härtig</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIGMETRICS Performance Evaluation Review</title>
		<imprint>
			<biblScope unit="volume">40</biblScope>
			<biblScope unit="page" from="13" to="17" />
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">An Energy Efficiency Feature Survey of the Intel Haswell Processor</title>
		<author>
			<persName><forename type="first">D</forename><surname>Hackenberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Schöne</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Ilsche</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Molka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Schuchart</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Geyer</surname></persName>
		</author>
		<idno type="DOI">10.1109/IPDPSW.2015.70</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings -2015 IEEE 29th International Parallel and Distributed Processing Symposium Workshops</title>
				<meeting>-2015 IEEE 29th International Parallel and Distributed Processing Symposium Workshops<address><addrLine>IPDPSW</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2015">2015. 2015</date>
			<biblScope unit="page" from="896" to="904" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Compiling Haskell for energy efficiency: Empirical analysis of individual transformations</title>
		<author>
			<persName><forename type="first">B</forename><surname>Santos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">H</forename><surname>Kirkeby</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Fernandes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Pardo</surname></persName>
		</author>
		<idno type="DOI">10.1145/3605098.3635915</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 39th ACM/SIGAPP Symposium on Applied Computing</title>
				<meeting>the 39th ACM/SIGAPP Symposium on Applied Computing</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2024">2024</date>
			<biblScope unit="page" from="1104" to="1113" />
		</imprint>
	</monogr>
	<note>Appendice Figure 17 includes all programs of the nofib benchmark</note>
</biblStruct>

<biblStruct xml:id="b26">
	<monogr>
		<title level="m">Figure 17: Relation between Haskell&apos;s benchmarks and the variables Package and Time with and without power cap</title>
				<imprint/>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
