<?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">Green computing for Erlang ⋆</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Gharbi</forename><surname>Youssef</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">ELTE</orgName>
								<orgName type="department" key="dep2">Faculty of Informatics</orgName>
								<orgName type="institution">Eötvös Loránd University</orgName>
								<address>
									<settlement>Budapest</settlement>
									<country key="HU">Hungary</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">István</forename><surname>Bozó</surname></persName>
							<email>bozoistvan@elte.hu</email>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">ELTE</orgName>
								<orgName type="department" key="dep2">Faculty of Informatics</orgName>
								<orgName type="institution">Eötvös Loránd University</orgName>
								<address>
									<settlement>Budapest</settlement>
									<country key="HU">Hungary</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Melinda</forename><surname>Tóth</surname></persName>
							<email>tothmelinda@elte.hu</email>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">ELTE</orgName>
								<orgName type="department" key="dep2">Faculty of Informatics</orgName>
								<orgName type="institution">Eötvös Loránd University</orgName>
								<address>
									<settlement>Budapest</settlement>
									<country key="HU">Hungary</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Green computing for Erlang ⋆</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">E2053855E4388485BB2556BD6C9F9680</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 consumption, Erlang, green computing, measurements (M. Tóth) 0009-0005-3183-0343 (G. Youssef)</term>
					<term>0000-0001-5145-9688 (I. Bozó)</term>
					<term>0000-0001-6300-7945 (M. Tóth)</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Energy efficiency means to achieve the same result with less energy consumption. By reducing energy consumption, companies can potentially experience both cost savings and improved software performance. Erlang is heavily used in continuously operating server applications therefore the energy used by Erlang applications are quite significant. Any change, any reduction of the consumption of Erlang applications might have significant amount on the total energy used by the servers. This presents a measurement environment for Windows to be able to analyse the energy usage behaviour of Erlang applications. We used this environment to analyse various Erlang applications. We present our finding and compare the behaviour of the Erlang BEAM on Windows and Linux.</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>Energy consumption is a major concern in every aspect of our life. Being energy efficient is a crucial factor of the modern manufacturing process <ref type="bibr" target="#b0">[1]</ref>. This also covers the production of computer components. In addition to producing hardware components effectively, we also require efficient computers.</p><p>Computer performance is mostly determined by two factors. The hardware we employ and the applications we use on our computers. For decades, people have been designing and producing ever-more energy-conscious hardware, but it has only recently became common practice to write energyefficient software. Computers are being employed in more energy-critical systems as a result of their ubiquitous use and the Internet of Things (IoT).</p><p>Since environmental consciousness is growing in popularity <ref type="bibr" target="#b1">[2]</ref>, it is important to create software that is energy efficient. Cisco says that 90% of internet traffic goes through Erlang-controlled nodes <ref type="bibr" target="#b2">[3]</ref>. With 5.07 billion internet users in the world growing by half a million daily <ref type="bibr" target="#b3">[4]</ref>, today comes the need to have efficient Erlang code patterns more than ever.</p><p>Our work aims to analyse the energy efficiency of Erlang applications by identifying language components that use less energy and to guide the developers to design and write more energy-efficient code. In our previous work <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b5">6,</ref><ref type="bibr" target="#b6">7]</ref> we created a toolchain to measure the energy consumption of Erlang language constructs and designed refactoring steps to transform the code to make it more efficient. The Green-Erl framework focused on Linux-based measurements and analysis.</p><p>In this paper, we are presenting a framework 1 that is applicable to measure the energy consumption of Erlang software running on a Windows operating system. We built the framework on top of Scaphandre <ref type="bibr" target="#b7">[8]</ref> and integrated it with the previous GreenErl framework <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b8">9]</ref>. We repeated the measurements from the previous studies <ref type="bibr" target="#b9">[10]</ref>, analysed the results and compared the main findings with the Linuxbased results.</p><p>This study aims to investigate the trends and behavior of Erlang/OTP on Windows and Linux as the size of input 1 https://github.com/joegharbi/greenErl data structures increases. The following research questions guide our investigation:</p><p>1. Runtime Performance Trends: -What are the trends in the runtime performance of Erlang/OTP when processing increasingly larger data structures on both Windows and Linux?</p><p>2. Energy Consumption Comparison: -How does the energy consumption of Erlang/OTP on Windows compare to Linux as the size of input data structures increases?</p><p>Our objective is not to determine which operating system is optimal, but rather to observe and analyze how Erlang/OTP behaves and trends on each operating system under varying conditions. By addressing these questions, we aim to provide a comprehensive analysis of Erlang/OTP's performance and energy efficiency on different operating systems with increasing input sizes.</p><p>The rest of the paper is structured as follows. In Section 2 we present the context of our work including details on the original GreenErl framework and our investigations on selecting a proper measurement environment for Windows. Section 3 explains how the Scaphandre-based measurement environment was built for Windows. Section 4 describes our measurements and the analysis of the result. Finally, Sections 5 and 6 presents related works and concludes the paper.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Background</head><p>In this paper we would like to investigate the energy behaviour of Erlang applications. Therefore in this section we are summarising the main concepts and tools we rely on.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">Green computing</head><p>Green computing is a study and practice of efficient and ecofriendly computing resources <ref type="bibr" target="#b10">[11]</ref>. It involves developing, designing, engineering, producing, using, and disposing of computing modules and devices to reduce environmental hazards and pollution <ref type="bibr" target="#b11">[12]</ref>.</p><p>Green computing become increasingly important in recent years <ref type="bibr" target="#b12">[13]</ref> as the world becomes more aware of the impact of technology on the environment <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b13">14]</ref> and the utilization of mobile applications, embedded systems, and data center-based services increases <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b15">16]</ref>. One way green computing can be achieved is through energy-efficient computing by designing computer systems that use less energy while still providing the same level of performance <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b17">18]</ref>. Energy-efficient computing can be achieved through various methods such as using low-power processors <ref type="bibr" target="#b18">[19]</ref>, optimizing software code <ref type="bibr" target="#b19">[20]</ref>, and using virtualization technology <ref type="bibr" target="#b20">[21]</ref>. Another way green computing can be achieved is through sustainable computing practices. This involves using environmentally friendly materials in the production of computer systems and reducing waste by recycling old computer systems <ref type="bibr" target="#b21">[22,</ref><ref type="bibr" target="#b22">23]</ref>.</p><p>Green data centers are another aspect of green computing <ref type="bibr" target="#b23">[24]</ref>. Data centers consume a large amount of energy due to their high-performance computing requirements. Green data centers aim to reduce this energy consumption using renewable energy sources such as solar or wind power. They also use energy-efficient cooling systems that reduce the amount of energy required to cool the data center. They also implement different techniques such as reducing wasted resources by tailoring the resources <ref type="bibr" target="#b24">[25]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">Erlang</head><p>Erlang <ref type="bibr" target="#b25">[26]</ref> is a general-purpose, concurrent, functional, high-level programming language <ref type="bibr" target="#b26">[27,</ref><ref type="bibr" target="#b27">28]</ref> that was developed by Ericsson in the late 1980s. It is used to build massively scalable soft real-time systems with requirements of high availability <ref type="bibr" target="#b28">[29,</ref><ref type="bibr" target="#b29">30]</ref>. It can be used for a wide range of applications, some of its uses are in telecoms <ref type="bibr" target="#b30">[31]</ref>, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system, the BEAM, has built-in support for concurrency, distribution and fault tolerance <ref type="bibr" target="#b29">[30]</ref>.</p><p>Erlang has several features that make it unique among programming languages and it also can serve as a runtime system <ref type="bibr" target="#b29">[30]</ref>. One of these features as mentioned earlier is its native support for concurrency and distribution. Erlang's concurrency model is based on lightweight processes that are isolated from each other and communicate through message passing. This makes it easy to write concurrent programs that can run on multiple processors or even multiple machines.</p><p>Another feature of Erlang is its support for fault tolerance. Erlang programs are designed to be fault-tolerant, which means that they can continue to operate even if some parts of the system fail. This makes Erlang an ideal choice for building systems that require high availability and reliability.</p><p>Erlang is a dynamically typed language, therefore errors are only raised at runtime once types of functions and variables are checked at runtime. Additionally, Erlang is strongly typed, which means there is no implicit type conversion.</p><p>Erlang is usually mentioned as Erlang/OTP. OTP is a set of Erlang libraries and design principles providing middleware to develop massively scalable soft real-time systems with requirements on high availability. It includes its own distributed database, applications to interact with other languages, and debugging and release handling tools.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3.">RAPL</head><p>Running Average Power Limit (RAPL) <ref type="bibr" target="#b31">[32]</ref> presents in contemporary Intel and AMD processors, facilitating the measurement and regulation of power usage across various components such as CPU cores, memory, and the package. RAPL grants access to power and energy counters through model-specific registers (MSRs), which can be accessed by software applications.</p><p>In Linux environments, RAPL is widely utilized for energy-conscious tasks such as monitoring, profiling, and improving the energy efficiency of software and hardware. However, RAPL lacks native support in Windows systems <ref type="bibr" target="#b32">[33]</ref>, thereby constraining the utility of RAPL-based solutions for Windows users and developers. A project named Windows-RAPL-Driver <ref type="bibr" target="#b33">[34]</ref> seeks to bridge this gap by furnishing a Windows driver enabling the gathering of RAPL metrics from physical computers. This driver exposes RAPL data via a device file accessible to user-space applications.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.4.">GreenErl framework for Linux</head><p>The former work on Erlang green computing <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b8">9]</ref> made several important contributions, including the development of GreenErl, a tool designed to measure the energy consumption of Erlang programs. The GreenErl framework was developed using RAPL <ref type="bibr" target="#b34">[35]</ref> to read the energy consumption. GreenErl comprised an Erlang module, a Python-based graphical user interface, and the rapl-read.c program, making it user-friendly and effective in analyzing the energy usage of different language constructs and elements:</p><p>• Rapl-read.c is responsible for reading the energy consumption. The original source file was modified <ref type="bibr" target="#b31">[32]</ref> to measure the energy consumption of Erlang functions. Now it splits each measurement function into two parts: one that reads the values before the Erlang function is run, and one that reads the values after and calculates the energy difference. GreenErl was used <ref type="bibr" target="#b4">[5]</ref> to examine the energy consumption of various data structures, such as proplists, maps, and dictionaries and found significant differences in the energy consumption of various operations. The study also explored the optimal scenarios for transforming lists into maps and identified the limits and kinds of operations that justify such a transformation.</p><p>The effect of higher-order functions on energy consumption was also investigated and replacing higher-order function calls with either a list comprehension or a specialized recursive function was suggested to decrease energy consumption.</p><p>The energy cost of different parallel language constructs were also examined, particularly the energy consumption of sending different data structures between processes. The study found that sending maps instead of lists can decrease energy consumption and suggested that transforming a list into a map can be a viable option for minimizing energy consumption in parallel language constructs.</p><p>Finally, some refactorings were proposed based on the findings, such as replacing calls to proplists:get_value/2 with the more efficient lists:keyfind/3, transforming a recursive function definition that uses a property list as its parameter to use a map instead, and eliminating higher-order function calls by replacing calls to the lists:map/2 and lists:filter/2 functions with either a new recursive function or a list comprehension, depending on what the user desires. The RefactorErl <ref type="bibr" target="#b35">[36]</ref> framework was used to implement these transformations <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b6">7]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.5.">Selecting the right environment for Windows</head><p>A significant challenge in reducing the energy usage of tech services is accurately and openly measuring it. However, most current tools and methods are either too expensive, too complicated, or not straightforward enough to be widely used by providers and users. For example, some tools need special hardware or software that does not work on all devices. Others use indirect estimates or averages that do not show the real power use of a particular service or device.</p><p>The GreenErl framework was developed using RAPL <ref type="bibr" target="#b34">[35]</ref> to read the energy consumption from the designated registers. Since Windows does not have APIs that allow access to the needed model-specific registers <ref type="bibr" target="#b32">[33]</ref>, we need to find a similar tool that allows us to reproduce the same measurements and findings on Windows Operating Systems with keeping in mind different constraints. The most important constraint was that we would like to measure the same Erlang modules meaning that we do not want to redefine new function descriptions to have the highest similar environmental comparison. We also need to consider that some functions are fast and have low energy consumption usage so the tool we should choose can handle values in nano-seconds and micro-watts. The last constraint is that we need to have the values in a file so that we can plot it in a graph and make the comparison.</p><p>We explored various Windows utilities, such as Powercfg, CPU-Z, Intel Power Gadget, and Scaphandre, to identify a tool that satisfies our specific requirements. These criteria included the ability to accurately measure energy consumption at the process level, maintain a rapid sampling rate, detect even low levels of energy consumption, and facilitate data storage in file (or other reusable, persistent storage) formats. Following this, we proceeded to adapt the Green-Erl framework for compatibility with Windows, preserving common elements while integrating the chosen tool into the system. We then rigorously tested the framework and finalized the configuration parameters for optimal performance. Subsequently, we conducted the measurement procedures and carefully analysed the results obtained.</p><p>A recent open-source tool called Scaphandre <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b36">37]</ref> endeavours to tackle these issues by offering a straightforward, dependable, and transparent approach to assessing and minimizing the energy consumption of technological services.</p><p>The fundamental principle behind Scaphandre's functionality lies in integrating two data sources: the proportion of resources utilized by a process and the total power consumption of the system. The latter relies on RAPL. We used Windows-RAPL-Driver <ref type="bibr" target="#b33">[34]</ref> to provide the required functionality,</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">The Scaphandre based energy usage measuring tool-chain for Windows</head><p>Scaphandre presents numerous advantages over other watt meters concerning platform compatibility, measurement precision (with sampling rates down to one nano-second), and data output versatility (JSON format). It is operable on both Windows and Linux systems and compatible with processors supporting the RAPL interface. Additionally, Scaphandre can assess the power consumption of any process or application on both physical and virtual hosts. It offers the capability to transmit or expose power consumption data to various data analysis or monitoring tools for further processing and visualization, including JSON, Grafana, and wrap10. Consequently, Scaphandre emerges as a superior choice for power consumption measurement across diverse scenarios, including the context of this work, and holds promise for potential future enhancements.</p><p>To be able to run Scaphandre on Windows we needed to first install Windows-RAPL-Driver <ref type="bibr" target="#b33">[34]</ref> to allow access to metrics and then Scaphandre <ref type="bibr" target="#b37">[38]</ref>  <ref type="foot" target="#foot_0">2</ref> .</p><p>Upon selecting Scaphandre as the designated tool, we proceeded to examine the pre-existing Unix-like OS GreenErl framework <ref type="bibr" target="#b4">[5]</ref>, experimenting with various implementations to determine the necessary edits and integration steps required. In this section, we will detail each component, outlining the adjustments made and ultimately presenting the finalized implementation outcome.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>GreenErl for Windows implementation</head><p>Our initial aim in adapting the GreenErl framework for Windows was to maintain consistent functionality and input specifications with the original Linux-based version. This entailed utilizing the existing Erlang modules as inputs for the Erlang measure module without necessitating modifications, wherever feasible, as the objective was to conduct a comparative analysis of energy consumption between the two operating systems. The process began with the removal of redundant functions and parameters from the Erlang measure module to create a streamlined command-line version of GreenErl tailored Erlang Module The Erlang module, denoted as energy_consumption_res.erl, exposes a single function measure/3. This function receives three arguments: {Module, Functions, InputDescs}, Count, ResultPath. Its purpose is to measure the energy consumption across multiple functions, each executed with various input sets and repetitions. Employing recursive invocation, it iterates through the list of input descriptions and utilizes the measureFunctions/3 function to assess each function with respective input argument lists. Additionally, it verifies whether the module under measurement features a function named generate_input, which, if available, generates input argument lists from provided descriptions. Otherwise, it treats the input descriptions directly as argument lists.</p><p>The input description follows the format {Value,</p><p>Count}, where Value represents the input value and Count signifies the number of repetitions for that specific value within the function. We introduced this capability to operate optionally if included in the input description, recognizing that certain functions execute swiftly with minimal energy consumption (approximately 0 Watts). In cases where the pattern {Value, Count} is absent, the default Count specified in the measure/3 parameter is utilized.</p><p>Python script Similar to the modifications made to the Erlang module, we streamlined the graphical user interface (GUI) components for Windows compatibility, as depicted in the measurement (Figure <ref type="figure" target="#fig_1">2</ref>) and visualization (Figure <ref type="figure" target="#fig_2">3</ref>) figures. Leveraging the TkInter library for Python, we developed an intuitive GUI allowing users to select the Erlang file containing the module for assessment, specify functions and inputs for measurement, and designate file paths for the Erlang module and result folders. Upon input completion, measurements can be queued for execution. Furthermore, we resolved path disparities between Windows and Linux, removed redundant packages, and updated the LaTeX exporter. A function was introduced to compute consumption values from JSON files, accepting arguments for folder path, count, input, and process ID (Pid) to ensure precise process-level consumption measurements. This function also handles errors, logging them if encountered. The visualization component (Figure <ref type="figure" target="#fig_2">3</ref>) facilitates exporting LaTeX files and visualizing results, requiring only the path to CSV files or folders. The interaction between these components is illustrated in Figure <ref type="figure" target="#fig_0">1</ref>.   <ref type="figure" target="#fig_3">4</ref>. This code segment handles the setup for generating the input JSON file name and constructing the Scaphandre command. To execute Scaphandre, we run the wmic process call create command from Windows Management Instrumentation (WMI) <ref type="bibr" target="#b39">[40]</ref>, and parse the output of the command to extract the PID of the newly spawned Scaphandre process. This PID is crucial for terminating the Scaphandre process once the function completes.</p><p>We utilize the JSON exporter feature offered by Scaphandre <ref type="bibr" target="#b40">[41]</ref> to record the results into a JSON file. We specify the file path along with its name. For instance, as illustrated in Figure <ref type="figure" target="#fig_4">5</ref>, given a module named map, a function named recursive, and an input description of 100,000, the resulting JSON filename would be map_recursive_100000.json. Subsequently, this JSON file was employed by our Python script to compute the function's energy consumption.</p><p>Scaphandre offers the default option to collect the consumption data of the top 20 consumers. However, as depicted in Figure <ref type="figure" target="#fig_4">5</ref>, we specified to gather data for the top 100 consumers explicitly. Through extensive experimentation with various consumer counts, we found that configuring it to 100 effectively covered all Erlang functions requiring measurement.</p><p>The final crucial feature for optimizing measurements and ensuring coherent results was determining the sampling rate. By default, Scaphandre sets this feature to two seconds <ref type="bibr" target="#b40">[41]</ref>, which proved inadequate for our requirements, particularly given the swift execution of some functions necessitating a larger sampling rate. After experimenting with various sampling rates, we opted for the highest available option, which is nano-second sampling, as depicted in Figure <ref type="figure" target="#fig_4">5</ref>. Nano-second sampling provided a significantly higher granularity of detail in the generated graphs. While this increased granularity introduced potential fluctuations, we determined that the benefits outweighed the drawbacks, as it consistently yielded better results overall.</p><p>For experimental validation while determining the optimal configurations, we conducted two distinct implemen-tations, each repeated 10 times. The consistent success observed across these iterations serves as compelling evidence of the framework's robustness and stability. This outcome confirms its readiness for future measurements, highlighting its reliability for continued use.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Analysing energy consumption</head><p>We performed various measurements on Windows to determine the energy behaviour of Erlang applications.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.">The measuring environment</head><p>The investigation into energy consumption across various functions was performed using the GreenErl framework for Windows, as outlined in Section 3. Each experiment was repeated 10 times, a choice made based on previous measurements that indicated a high level of consistency through analysis of standard deviation and range. Additionally, the runtime of the functions was measured. The data collected from these experiments were plotted and subjected to detailed descriptive statistical analysis.</p><p>All measurements in this research were performed on a DELL XPS 13 9370 equipped with an Intel Core™ i5-8250U CPU @ 1.60GHz 1.80 GHz, 8GB of DDR3 RAM, 64-bit operating system, x64-based processor, running Windows 11 Pro operating system Version 22H2. We used Erlang/OTP 23.3.4 for the measurements. The previous Linux measurements were conducted on a Toshiba Satellite L50 equipped with an Intel Core i7-4700MQ @ 2.4 GHz, 12GB of RAM, running Ubuntu 16.04 LTS.</p><p>To ensure the accuracy and reliability of our results, we implemented several additional measures to create a controlled and consistent environment:</p><p>Minimization of Processes All non-essential processes and applications were terminated prior to conducting the measurements to eliminate any background activities that could introduce noise and affect the performance analysis.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Hardware Consistency</head><p>The measurements were conducted on a DELL XPS 13 9370 with the following specifications: Intel CoreTM i5-8250U CPU @ 1.60GHz 1.80 GHz, 8GB of DDR3 RAM, 64-bit operating system, x64-based processor. The Windows environment ran Windows 11 Pro Version 22H2. Erlang/OTP 23.3.4 was used for the measurements.</p><p>Operating System Services Only essential operating system services were active during the measurements to avoid any extraneous influence on the results.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Network and Connectivity</head><p>The WiFi was turned off, and the laptop was set to airplane mode during all measurements to prevent network-related processes from affecting the results. System Initialization Each measurement was initiated on a fresh startup to ensure a clean state, free from any residual processes or temporary files that could impact the results.</p><p>... InputDesFile = "\"" ++ ResultPath ++ atom_to_list(Module) ++ "_" ++ atom_to_list(Function) ++ "_" ++ integer_to_list(InputDesc) ++ ".json"++ "\"", io:format("~nCurrently measuring functions with input description ~p~n",[InputDesc]), % ns sampling Command = "scaphandre json -s 0 -n 1 -m 100 -f " ++ InputDesFile, Output = os:cmd("wmic process call create \""++ Command ++"\" | find \"ProcessId\""), {match, [PidString]} = re:run(Output, "ProcessId = ([0-9]+)", [{capture, all_but_first, list}]), Pid = list_to_integer(PidString), ...  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Battery and Power Management</head><p>The laptop was fully charged and plugged into the AC during the measurements. Screen brightness was set to the minimum level. The laptop was set to test mode as required by Scaphandre, and the screen and sleeping features were disabled both on the battery and when plugged in.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>User Interaction</head><p>The laptop was not used during the measurements to avoid any additional load or interference.</p><p>By implementing these measures, we aimed to create a controlled and consistent environment for conducting the performance analysis, thereby enhancing the reliability of our findings.</p><p>These detailed conditions ensured that our measurements were conducted under minimal interference, providing a clear and accurate representation of the software programs' energy consumption and performance.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2.">Types of measurements</head><p>The preceding study <ref type="bibr" target="#b4">[5]</ref> conducted an original investigation into the energy consumption of complex algorithms in Erlang. Specifically, it compared different implementations of the N-queens problem and sparse matrix multiplication <ref type="bibr" target="#b5">[6]</ref>, employing various techniques including higher-order functions, recursion, list comprehensions, lists, and arrays. Additionally, other aspects of the research <ref type="bibr" target="#b4">[5]</ref> focused on more fundamental language elements rather than solely addressing complex problems.</p><p>In this measurement, we focus on comparing different implementations of the same language element. Our detailed results can be found in this thesis <ref type="bibr" target="#b9">[10]</ref>, as it is not feasible to include all figures here. Additionally, all GreenErl for Windows framework components can be found in the same repository <ref type="foot" target="#foot_1">3</ref> . Based on the previous findings, we selected the following areas for this analysis:</p><p>• Data structures • Higher order functions • Parallel language constructs • Algorithmic skeletons Data structures The objective of this study was to evaluate the energy efficiency of various data structures for storing key-value pairs on Windows. We conducted a series of experiments to measure the energy consumption of different operations on these data structures and to analyze the trade-offs of changing the representation by converting the data to another format. Furthermore, we compared the energy performance of alternative methods for executing the same operation within a given data structure. The data structures that we investigated in this study were:</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>• List of tuples (or proplists) • Map • Dictionary</head><p>The operations we measured on these data structures are the following:</p><p>• Creating/Converting the data structures • Finding the value belonging to a particular key • Inserting a new key-value pair • Updating the value belonging to an existing key • Deleting an existing element Finding an element Among the observations, we found that map implementations exhibited greater efficiency and faster execution times. In contrast, all list implementations consumed more energy and took longer to complete. This finding is illustrated in the Figure <ref type="figure" target="#fig_5">6</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Higher-order functions</head><p>We also investigated the influence of higher-order functions (HOFs) on energy consumption. Based on the findings shown in Figure <ref type="figure" target="#fig_6">7</ref>, both named function and lambda expression, exhibit consistently elevated energy consumption. Conversely, using list comprehension proves to be relatively more efficient, regardless of whether a named function or lambda expression is utilized.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Parallel language constructs</head><p>Erlang effortlessly supports extensive concurrency through its simple primitives for process creation and communication. Each process operates within its own isolated memory space, exclusively holding its data. To share data between processes, it must be transmitted as messages. This research measures not only the energy consumption associated with creating, modifying, and converting various data structures but also the  We analysed the map/send function initiates a process that interacts with the main process by exchanging a list of key-value pairs along with a confirmation message. Similarly, the list/send and dictionary/send functions communicate a list and a dictionary, respectively. We found that sending a list of tuples proves to be the least efficient in terms of energy consumption. Conversely, sending maps demonstrates the highest efficiency, followed by the dictionary (Figures <ref type="figure" target="#fig_8">8 and 9</ref>).</p><p>Algorithmic skeletons This study aimed to understand how different parallel algorithmic skeletons impact energy consumption. These parallel programming patterns are extensively used due to their ability to simplify the complexities of parallel and distributed applications, highlighting the importance of investigating their energy usage implications. In this research, we evaluated fundamental skeletons such as farm and pipeline skeletons. Additionally, considering the potential combinations of these patterns, we also assessed various compositions of skeletons.</p><p>For instance, the task farm is a widely used parallel programming pattern to parallelise the evaluation of a function for all elements of an input structure. To implement it, three key members with distinct roles are defined. The dispatcher is responsible for managing the input and distributing elements to the workers. Each worker executes the function on assigned inputs and forwards the results to the collector before requesting a new element. Finally, the collector aggregates the results. It is important to note that this skeleton does not maintain the order of the elements.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3.">Comparing energy consumption</head><p>We aimed to compare the energy behaviour of Erlang applications on Linux and Windows operating systems. Therefore, we will explore some of the trends between the two operating systems.</p><p>Data structures A noticeable distinction was observed between Linux and Windows environments when constructing a dictionary as shown in Figure <ref type="figure" target="#fig_9">10</ref>. Linux exhibited a peak in energy consumption compared to other data structures, whereas Windows demonstrated a much lower peak. Interestingly, the remaining functions displayed consistent behaviour across both operating systems.</p><p>On the other hand, we observed that most functions exhibited similar behaviour. For instance, when deleting an element from a list, as illustrated in Figure <ref type="figure" target="#fig_10">11</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Inference</head><p>The Linux kernel for servers has been specifically optimized for high throughput and performance <ref type="bibr" target="#b41">[42]</ref>, prioritizing processing efficiency over power consumption. Consequently, Linux distributions tend to consume more power and battery life compared to Windows and Mac operating systems <ref type="bibr" target="#b42">[43]</ref>. Although the aim of this investigation is not to prove which Operating System is more efficient as  As previously mentioned, comprehensive results are documented in this thesis <ref type="bibr" target="#b9">[10]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Related work</head><p>We are investigating the related works from different perspectives. We are summarising the studies related to functional programming and related to comparisons of operating systems and programming languages.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Windows versus Linux operating systems</head><p>To fairly compare and study the energy consumption differences between Linux and Windows, we first need to understand the fundamental key differences between these operating systems. A detailed study was conducted by Hadeel et al <ref type="bibr" target="#b43">[44]</ref> where they reviewed the history and development of both systems and their market share and user base. They also discussed the technical aspects of the systems, such as the kernel, the file system, the security model, the user interface and the compatibility with hardware and software. One of the major differences is the process scheduling, where they compared the scheduling algorithms used by Linux kernel 2.6 and Windows NT-based versions, and analyzed their  Another study by Beatriz Prieto et al <ref type="bibr" target="#b44">[45]</ref> on the energy efficiency of personal computers compared to mainframe computers and supercomputers, where the authors explored the possibility of running scientific and engineering programs on personal computers and measuring these systems' power efficiency. They also showed how the power efficiency obtained for the same workloads on personal computers is similar and sometimes less than that obtained on supercomputers included in the Green500 <ref type="bibr">[46]</ref> ranking. This study reveals that energy consumption not only can vary between operating systems but also when using different makers where they used five different personal computers with different processors of different generations.</p><p>A comparative analysis was performed by Sayed Najmuddin et al <ref type="bibr" target="#b45">[47]</ref> of the power and battery consumption of Windows operating systems and modern Linux distributions, such as Ubuntu, Fedora, Debian, Red Hat, and others. They argued that one of the main factors that affect the power management of Linux is the quality of the drivers, which are often poorly written or incompatible with the hardware. The researchers also explained that this is due to the reluctance of hardware manufacturers to share the details of their products with driver developers, especially those who work for open-source operating systems. They also pointed out that some versions of the Linux kernel are not properly designed and optimized for mobile systems, as they are mainly intended for desktop platforms. They concluded by recommending that users should select the most suitable and efficient kernel for their system as a way to improve the power and battery performance of Linux.</p><p>All of the previously mentioned research proves the fact that Windows and Linux differ radically from each other.</p><p>Programming languages efficiency Rui Pereira et al <ref type="bibr" target="#b47">[48]</ref> presented a study of the energy efficiency of 27 programming languages, using 10 different algorithms. The authors measured the time, CPU usage, memory usage and energy consumption of each program execution, and used statistical methods to rank the languages according to each objective. They also analyzed the impact of the execution type (interpreted or compiled) and the programming paradigm (imperative, object-oriented or functional) on energy efficiency.</p><p>The main findings are that compiled languages are more energy-efficient than interpreted ones and that functional languages are more energy-efficient than imperative or object-oriented ones. The researchers also identified C, Rust, Ada and Pascal as the most energy-efficient languages, and Perl, JRuby, Python and Lua as the least energy-efficient ones. They also found interesting correlations between energy, time and memory, such as slower languages consuming less energy and memory usage influencing energy consumption such as languages with comparable energy consumption can have significantly different execution times. For instance, in the binary trees benchmark, Pascal consumed approximately 10% less energy than Chapel, but Chapel executed about 55% faster than Pascal. This finding emphasizes the results that we found in this paper, where the parallel implementation of the identity function with two workers was the slowest but with the least energy consumption, which was the same finding for the previous thesis work <ref type="bibr" target="#b4">[5]</ref>.</p><p>The authors used a tool called CodeCarbonFootprint (CCF) to measure the energy consumption of each language and problem. The experiments were performed on a desktop computer with the following configuration: 16GB of RAM, an Intel® Core™ i5-4460 CPU @ 3.20GHz with a Haswell microarchitecture, and a Linux Ubuntu Server 16.10 operating system.</p><p>Another important aspect of programming languages and their energy consumption can be linked to the misuse of data structures or engineering solutions. This can be illustrated in the research done by Meszaros et al <ref type="bibr" target="#b5">[6]</ref> where they measured the energy consumption of Erlang programs and discovered patterns and relations between language constructs and power consumption. They created a framework to make the measurement user-friendly. This framework uses RAPL to read the access the energy consumption values. All measurements were done using Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz and 8 GB of DDR3 RAM @ 1600MHz, using Ubuntu 16.04 LTS. They found that eliminating higher-order functions may result in a more efficient program. They also found that using naive parallelisation solutions can result in the worst consumption due to the fact of spawning different processes which was the case in our results mentioned in this paper and the thesis containing the details of the work <ref type="bibr" target="#b9">[10]</ref>.</p><p>More recent research that incorporates hardware measurement setups to evaluate energy consumption is also noteworthy. Koedijk and Oprescu's 2022 study, "Finding significant differences in the energy consumption when comparing programming languages and programs," <ref type="bibr" target="#b48">[49]</ref> presented at the International Conference on ICT for Sustainability (ICT4S), identified substantial variations in energy usage across different programming languages. Their results indicated that certain languages, such as C and Rust, tend to be more energy-efficient compared to higher-level languages like Python and JavaScript. They also found significant variations in energy consumption based on language choice and programming techniques. While C and C++ consistently exhibit lower energy consumption across the tested programs, they note that energy usage can vary depending on compiler optimization settings. This study's findings provide valuable insights and a more detailed understanding of the energy efficiency landscape, underscoring the importance of considering hardware-level data and compiler optimizations in energy consumption analysis for software development.</p><p>Functional languages Luis Gabriel Lima et al <ref type="bibr" target="#b49">[50,</ref><ref type="bibr" target="#b50">51]</ref>. conducted studies specifically targeting the energy efficiency of functional programming languages, focusing on Haskell. Their research, "On Haskell and energy efficiency" <ref type="bibr" target="#b49">[50]</ref>, and "Haskell in Green Land: Analyzing the Energy Behavior of a Purely Functional Language" <ref type="bibr" target="#b50">[51]</ref>, examined Haskell's energy consumption characteristics. They evaluated various Haskell programs to understand the impact of different language features on energy usage. The studies revealed that Haskell, due to its purely functional nature, often exhibited favorable energy consumption patterns compared to other programming languages. They also found that small changes can make a big difference in terms of energy consumption. These findings underscore the importance of considering functional languages like Haskell when analyzing energy efficiency in software development.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Conclusion</head><p>Green computing is important for all kinds of systems, from handheld devices to large-scale data centres. It can help reduce greenhouse gas emissions energy consumption, and electronic waste. It can also save costs and improve performance for technology makers and users. This thesis was a complementary work to the previous findings of our research team. Previously, the work was only focused on Unix-like operating systems, thus this thesis was a first step into bridging the gap between these different platforms.</p><p>As a first step, we started by looking for a tool to fill the gap between the two operating systems since RAPL is not available in Windows. Thus we used Scaphandre since it checked all of the boxes for our constraints. We integrated the tool with the previous GreenErl framework and measured different Erlang functions.</p><p>There were some nice findings about Erlang on Windows. We measured the energy consumption and runtime of some data structure implementations such as lists, maps and dictionaries. We evaluated creating, converting, updating, searching and deleting elements from those data structures where we found that in most cases list is the worst in terms of energy consumption, the dictionary was better except while updating all of its elements. We also measured some higher-order functions like applying a function on filtered elements where recursive implementations were the most efficient. Since one of the many strengths of Erlang is parallelization, We also measured sending data in different forms. Lastly, we assessed some algorithmic skeletons such as task farms where we concluded it is better to spawn as many workers as the number of your physical processes.</p><p>As for the comparison section, we can say the trend in both operating systems had more similarities than differences with some exceptions. For example, the dictionary had a lower consumption on Windows and a noticeably different overall behaviour while being the highest consumer in Linux except for updating all elements in the dictionary that resulted in it being as high in Windows as in Linux. We also noticed that Windows results had higher fluctuating values compared to Linux, this can be due to the difference in the sampling rates between RAPL <ref type="bibr" target="#b51">[52]</ref> and Scaphandre.</p><p>Future work As Scaphandre is still in an early stage, we think it is a good approach to focus on this tool to create a cross-platform GreenErl for (Linux, Windows, VMs, and Containers). Using the same tool to get the values will give genuine comparable results.</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: Workflow diagram of GreenErl on Windows</figDesc><graphic coords="4,75.49,65.61,442.26,237.77" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Python GUI to run the tool</figDesc><graphic coords="4,310.71,552.37,209.41,140.43" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Python GUI to visualize</figDesc><graphic coords="5,73.12,65.61,209.41,212.96" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: A code snippet from the Erlang measure module</figDesc></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: JSON export example</figDesc></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: Finding an element using GreenErl on Windows</figDesc><graphic coords="7,72.00,240.16,451.27,131.25" 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: Higher-order functions using GreenErl on Windows</figDesc></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: Sending of elements from a container</figDesc><graphic coords="8,72.00,65.61,451.26,134.15" 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: Sending of elements from a container</figDesc><graphic coords="8,72.00,244.65,451.26,131.77" 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: Different behavior of dictionary on Linux and Windows</figDesc><graphic coords="8,72.00,594.72,451.27,136.32" 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: Different behavior of deleting an element on Linux and Windows</figDesc><graphic coords="9,72.00,65.61,451.27,152.76" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>• The Erlang module, energy_consumption</head><label></label><figDesc></figDesc><table><row><cell>.erl,</cell></row><row><cell>communicates with the rapl-read.c program to</cell></row><row><cell>measure the energy consumption of Erlang func-</cell></row><row><cell>tions. The module has a measure function that</cell></row><row><cell>takes various parameters, such as the path to the</cell></row><row><cell>rapl-read.c program, the functions to measure,</cell></row><row><cell>the inputs for the functions, the number of repeti-</cell></row><row><cell>tions, and the log file location. The module can also</cell></row><row><cell>generate inputs from input descriptors and measure</cell></row><row><cell>all exported functions in a module.</cell></row><row><cell>• The Python GUI is a tool that helps to organize</cell></row><row><cell>and visualize the measurements. The GUI uses the</cell></row><row><cell>TkInter library to create a user interface, where you</cell></row><row><cell>can select the Erlang file, the functions, and the in-</cell></row><row><cell>puts to measure. The GUI also allows building the</cell></row><row><cell>rapl-read.c program and setting up the measure-</cell></row><row><cell>ments. It allows adding multiple measurements to</cell></row><row><cell>a queue and running them one by one. After the</cell></row><row><cell>measurements are done, you can use the matplotlib</cell></row><row><cell>library to plot the results on a graph or export the</cell></row><row><cell>results to a latex graph.</cell></row><row><cell>These components communicate with each other. The</cell></row><row><cell>Python script uses the subprocess library to create the Erlang</cell></row><row><cell>shell and run the commands. The Erlang module spawns</cell></row><row><cell>the rapl-read.c program and sends signals to start and</cell></row><row><cell>stop the measurement. The rapl-read.c program reads</cell></row><row><cell>the RAPL registers and sends the measured data back to the</cell></row><row><cell>Erlang module. Finally, the Erlang module creates the log</cell></row><row><cell>files, which are accessed by the Python script to visualize</cell></row><row><cell>the results.</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_0">Throughout the installation process, we faced many challenges since the framework was in an early phase of development. For those who will try the framework in the future, there is new documentation and explanation of the Windows-RAPL-Driver installation on the official website<ref type="bibr" target="#b38">[39]</ref> supporting Windows.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_1">https://github.com/joegharbi/greenErl</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgments</head><p>This work is partially supported by CERCIRAS COST Action CA19135 funded by COST Association.</p><p>Project no. TKP2021-NVA-29 has been implemented with the support provided by the Ministry of Culture and Innovation of Hungary from the National Research, Development and Innovation Fund, financed under the TKP2021-NVA funding scheme.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">What is green computing?</title>
		<author>
			<persName><forename type="first">I</forename></persName>
		</author>
		<ptr target="https://www.ibm.com/cloud/blog/green-computing" />
		<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Computing&apos;s grand challenge for sustainability</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">A</forename><surname>Chien</surname></persName>
		</author>
		<idno type="DOI">10.1145/3559163</idno>
		<ptr target="https://doi.org/10.1145/3559163.doi:10.1145/3559163" />
	</analytic>
	<monogr>
		<title level="j">Commun. ACM</title>
		<imprint>
			<biblScope unit="volume">65</biblScope>
			<biblScope unit="page">5</biblScope>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<author>
			<persName><forename type="first">S</forename><surname>Unge</surname></persName>
		</author>
		<ptr target="https://codesync.global/media/how-cisco-is-using-erlang-for-intent-based-/networking-cbf20/" />
		<title level="m">How cisco is using erlang for intent-based networking</title>
				<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>The</surname></persName>
		</author>
		<ptr target="https://datareportal.com/global-digital-overview#:~:text=Internet%20use%20around%20the%20world,million%20new%20users%20every%20day" />
		<title level="m">Datareportal -global digital insights</title>
				<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">GreenErl Measuring the energy consumption of Erlang programs and energy conscious refactorings</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">N</forename><surname>Áron Attila Mészáros</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2019">2019</date>
		</imprint>
		<respStmt>
			<orgName>Eötvös Loránd University, Faculty of Informatics, Department of Programming Languages and Compilers</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Master&apos;s thesis</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Towards green computing in erlang</title>
		<author>
			<persName><forename type="first">A</forename><surname>Mezsaros</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Nagy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Bozo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Toth</surname></persName>
		</author>
		<idno type="DOI">10.24193/subbi.2018.1.05</idno>
		<idno>doi:</idno>
		<ptr target="10.24193/subbi.2018.1.05" />
	</analytic>
	<monogr>
		<title level="j">Studia Universitatis Babes , -Bolyai Informatica</title>
		<imprint>
			<biblScope unit="volume">63</biblScope>
			<biblScope unit="page" from="64" to="79" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Tools supporting green computing in erlang</title>
		<author>
			<persName><forename type="first">G</forename><surname>Nagy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">A</forename><surname>Mészáros</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Bozó</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Tóth</surname></persName>
		</author>
		<idno type="DOI">10.1145/3331542.3342570</idno>
		<idno>doi:10.1145/3331542.3342570</idno>
		<ptr target="https://doi.org/10.1145/3331542.3342570" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 18th ACM SIGPLAN International Workshop on Erlang, Erlang 2019</title>
				<meeting>the 18th ACM SIGPLAN International Workshop on Erlang, Erlang 2019<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="30" to="35" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><surname>Hubblo</surname></persName>
		</author>
		<ptr target="https://hubblo-org.github.io/scaphandre-documentation/index.html" />
		<title level="m">Scaphandre documentation</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Green computing in Erlang</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">T C</forename><surname>Ortiz</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
		<respStmt>
			<orgName>Eötvös Loránd University, Faculty of Informatics, Department of Programming Languages and Compilers</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Master&apos;s thesis</note>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title level="m" type="main">Green computing for Erlang</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Gharbi</surname></persName>
		</author>
		<ptr target="https://github.com/joegharbi/greenErl/blob/main/papers/YoussefGharbi_IKYCUE_THESIS.pdf" />
		<imprint>
			<date type="published" when="2023">2023</date>
			<pubPlace>Budapest, Hungary</pubPlace>
		</imprint>
		<respStmt>
			<orgName>Eötvös Loránd University ; Faculty of Informatics, Department of Programming Languages and Compilers</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Master&apos;s thesis</note>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<author>
			<persName><forename type="first">I</forename><surname>Ray</surname></persName>
		</author>
		<ptr target="https://www.researchgate.net/publication/270570843_" />
		<title level="m">Green computing</title>
				<imprint>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Green computing</title>
		<author>
			<persName><forename type="first">B</forename><surname>Saha</surname></persName>
		</author>
		<idno type="DOI">10.14445/22312803/IJCTT-V14P112</idno>
	</analytic>
	<monogr>
		<title level="j">International Journal of Computer Trends and Technology (IJCTT)</title>
		<imprint>
			<biblScope unit="volume">14</biblScope>
			<biblScope unit="page" from="46" to="50" />
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Understanding green software development: A conceptual framework</title>
		<author>
			<persName><forename type="first">L</forename><surname>Ardito</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Procaccianti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Torchiano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Vetrò</surname></persName>
		</author>
		<idno type="DOI">10.1109/MITP.2015.16</idno>
	</analytic>
	<monogr>
		<title level="j">IT Professional</title>
		<imprint>
			<biblScope unit="volume">17</biblScope>
			<biblScope unit="page" from="44" to="50" />
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">How green is your software?</title>
		<author>
			<persName><forename type="first">S</forename><surname>Podder</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Burden</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">Kumar</forename><surname>Singh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Maruca</surname></persName>
		</author>
		<ptr target="https://hbr.org/2020/09/how-green-is-your-software" />
		<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">An empirical study of practitioners&apos; perspectives on green software engineering</title>
		<author>
			<persName><forename type="first">I</forename><surname>Manotas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Bird</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Shepherd</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Jaspan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Sadowski</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>
		<idno type="DOI">10.1145/2884781.2884810</idno>
		<idno>doi:10.1145/2884781.2884810</idno>
		<ptr target="https://doi.org/10.1145/2884781.2884810" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 38th International Conference on Software Engineering, ICSE &apos;16</title>
				<meeting>the 38th International Conference on Software Engineering, ICSE &apos;16<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="237" to="248" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<author>
			<persName><forename type="first">N</forename><surname>Gholipour</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Arianyan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Buyya</surname></persName>
		</author>
		<title level="m">Recent Advances in Energy Efficient Resource Management Techniques in Cloud Computing Environments</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2021">2021</date>
			<biblScope unit="page">29</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Predicate path expressions</title>
		<author>
			<persName><forename type="first">B</forename></persName>
		</author>
		<ptr target="https://www.ijana.in/Special%20Issue/file24.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the UGC Sponsored National Conference on Advanced Networking and Applications, Advanced Networking and Applications (IJANA)</title>
				<meeting>the UGC Sponsored National Conference on Advanced Networking and Applications, Advanced Networking and Applications (IJANA)</meeting>
		<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="107" to="112" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Making cloud computing more efficient</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kaur</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Gupta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Verma</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal of Advanced Research in Computer Science and Software Engineering</title>
		<imprint>
			<biblScope unit="volume">4</biblScope>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Energy efficient computing exploiting the properties of light</title>
		<author>
			<persName><forename type="first">J</forename><surname>Shamir</surname></persName>
		</author>
		<idno type="DOI">10.1117/12.2024487</idno>
		<idno>doi:</idno>
		<ptr target="10.1117/12.2024487" />
	</analytic>
	<monogr>
		<title level="m">International Society for Optics and Photonics</title>
				<editor>
			<persName><forename type="first">H</forename><surname>Tribute</surname></persName>
		</editor>
		<editor>
			<persName><surname>John Caulfield</surname></persName>
		</editor>
		<imprint>
			<publisher>SPIE</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">8833</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Energy efficient software through dynamic voltage scheduling</title>
		<author>
			<persName><forename type="first">G</forename><surname>Konduri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Goodman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Chandrakasan</surname></persName>
		</author>
		<idno type="DOI">10.1109/ISCAS.1999.777877</idno>
	</analytic>
	<monogr>
		<title level="m">IEEE International Symposium on Circuits and Systems (ISCAS)</title>
				<imprint>
			<date type="published" when="1999">1999. 1999</date>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="page" from="358" to="361" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Green flexible opportunistic computing with virtualization</title>
		<author>
			<persName><forename type="first">H</forename><surname>Castro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Sotelo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">O</forename><surname>Diaz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Bouvry</surname></persName>
		</author>
		<idno type="DOI">10.1109/CIT.2011.105</idno>
	</analytic>
	<monogr>
		<title level="m">IEEE 11th International Conference on Computer and Information Technology</title>
				<imprint>
			<date type="published" when="2011">2011. 2011</date>
			<biblScope unit="page" from="629" to="634" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<title level="m" type="main">Green computingan eco friendly approach for energy efficiency and minimizing e-waste</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">V</forename><surname>Kumar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Kiruthiga</surname></persName>
		</author>
		<ptr target="https://www.academia.edu/6943675/Green_Computing_An_Eco_friendly_Approach_for_Energy_Efficiency_and_Minimizing_E_Waste" />
		<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="page" from="356" to="359" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">The advent of &quot;green&quot; computer design</title>
		<author>
			<persName><forename type="first">L</forename><surname>Goldberg</surname></persName>
		</author>
		<idno type="DOI">10.1109/2.708445</idno>
	</analytic>
	<monogr>
		<title level="j">Computer</title>
		<imprint>
			<biblScope unit="volume">31</biblScope>
			<biblScope unit="page" from="16" to="19" />
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">A survey of research on greening data centers</title>
		<author>
			<persName><forename type="first">D</forename><surname>Çavdar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Alagoz</surname></persName>
		</author>
		<idno type="DOI">10.1109/GLOCOM.2012.6503613</idno>
	</analytic>
	<monogr>
		<title level="m">IEEE Global Communications Conference (GLOBECOM)</title>
				<imprint>
			<date type="published" when="2012">2012. 2012</date>
			<biblScope unit="page" from="3237" to="3242" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Reducing wasted resources to help achieve green data centers</title>
		<author>
			<persName><forename type="first">J</forename><surname>Torres</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Carrera</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Hogan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Gavalda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Beltran</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Poggi</surname></persName>
		</author>
		<idno type="DOI">10.1109/ipdps.2008.4536219</idno>
		<ptr target="https://ieeexplore.ieee.org/abstract/document/4536219.doi:10.1109/ipdps.2008.4536219" />
	</analytic>
	<monogr>
		<title level="m">IEEE International Symposium on Parallel and Distributed Processing</title>
				<imprint>
			<date type="published" when="2008">2008. 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<monogr>
		<title level="m" type="main">Erlang programming</title>
		<author>
			<persName><forename type="first">F</forename><surname>Cesarini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Thompson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">;</forename></persName>
		</author>
		<author>
			<persName><forename type="first">O'</forename><surname>Reilly</surname></persName>
		</author>
		<ptr target="http://shop.oreilly.com/product/9780596518189.do" />
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<monogr>
		<title level="m" type="main">Erlang Programming</title>
		<author>
			<persName><forename type="first">F</forename><surname>Cesarini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">J</forename><surname>Thompson</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2009">2009</date>
			<publisher>United States of America</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<monogr>
		<title level="m" type="main">Programming Erlang: Software for a Concurrent World, The Pragmatic Bookshelf</title>
		<author>
			<persName><forename type="first">J</forename><surname>Armstrong</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1993">1993</date>
			<pubPlace>United States of America</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">The development of erlang</title>
		<author>
			<persName><forename type="first">J</forename><surname>Armstrong</surname></persName>
		</author>
		<idno type="DOI">10.1145/258948.258967</idno>
		<idno>doi:10.1145/258948.258967</idno>
		<ptr target="https://doi.org/10.1145/258948.258967" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Second ACM SIGPLAN International Conference on Functional Programming, ICFP &apos;97</title>
				<meeting>the Second ACM SIGPLAN International Conference on Functional Programming, ICFP &apos;97<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="1997">1997</date>
			<biblScope unit="page" from="196" to="203" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">A history of erlang</title>
		<author>
			<persName><forename type="first">J</forename><surname>Armstrong</surname></persName>
		</author>
		<idno type="DOI">10.1145/1238844.1238850</idno>
		<idno>doi:10.1145/1238844.1238850</idno>
		<ptr target="https://doi.org/10.1145/1238844.1238850" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Third ACM SIGPLAN Conference on History of Programming Languages, HOPL III</title>
				<meeting>the Third ACM SIGPLAN Conference on History of Programming Languages, HOPL III<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="6" to="7" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">Erlang -an experimental telephony programming language</title>
		<author>
			<persName><forename type="first">J</forename><surname>Armstrong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Virding</surname></persName>
		</author>
		<idno type="DOI">10.1109/ISS.1990.765711</idno>
	</analytic>
	<monogr>
		<title level="m">International Symposium on Switching</title>
				<imprint>
			<date type="published" when="1990">1990</date>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="page" from="43" to="48" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<monogr>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">M</forename><surname>Weaver</surname></persName>
		</author>
		<ptr target="http://web.eece.maine.edu/~vweaver/projects/rapl/" />
		<title level="m">Reading RAPL energy measurements from Linux</title>
				<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b32">
	<monogr>
		<ptr target="https://firefox-source-docs.mozilla.org/performance/tools_power_rapl.html#windows" />
		<title level="m">tools/power/rapl -firefox source docs documentation</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b33">
	<monogr>
		<title level="m" type="main">Windows driver to get RAPL metrics</title>
		<author>
			<persName><surname>Hubblo</surname></persName>
		</author>
		<ptr target="https://github.com/hubblo-org/windows-rapl-driver" />
		<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<monogr>
		<ptr target="https://powerapi.org/reference/formulas/rapl/" />
		<title level="m">Rapl -powerapi</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b35">
	<analytic>
		<title level="a" type="main">Refactorerl -source code analysis and refactoring in erlang</title>
		<author>
			<persName><forename type="first">I</forename><surname>Bozó</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Horpácsi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Horváth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Kitlei</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Köszegi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">M</forename></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Tóth</surname></persName>
		</author>
		<idno>178-2</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 12th Symposium on Programming Languages and Software Tools</title>
				<meeting>the 12th Symposium on Programming Languages and Software Tools<address><addrLine>Tallin, Estonia</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2011">2011</date>
			<biblScope unit="page" from="138" to="148" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b36">
	<monogr>
		<ptr target="https://docs.rs/scaphandre/latest/scaphandre/" />
		<title level="m">scaphandre -rust</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b37">
	<monogr>
		<author>
			<persName><forename type="first">Scaphandre</forename><surname>Hubblo</surname></persName>
		</author>
		<ptr target="https://github.com/hubblo-org/scaphandre" />
		<title level="m">Energy consumption metrology agent</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b38">
	<monogr>
		<author>
			<persName><surname>Hubblo</surname></persName>
		</author>
		<ptr target="https://hubblo-org.github.io/scaphandre-documentation/tutorials/compilation-windows.html" />
		<title level="m">Compilation for windows</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b39">
	<monogr>
		<ptr target="https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic" />
		<title level="m">WMI command-line (WMIC) utility -Win32 apps</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b40">
	<monogr>
		<title level="m" type="main">JSON exporter for Scaphandre</title>
		<author>
			<persName><surname>Hubblo</surname></persName>
		</author>
		<ptr target="https://hubblo-org.github.io/scaphandre-documentation/references/exporter-json.html" />
		<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b41">
	<analytic>
		<title level="a" type="main">Energy-aware task and interrupt management in linux</title>
		<author>
			<persName><forename type="first">V</forename><surname>Srinivasan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">R</forename><surname>Shenoy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Vaddagiri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Sarma</surname></persName>
		</author>
		<ptr target="http://www.cs.columbia.edu/~nahum/w6998/papers/ols-2008-srinivasan-energy.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Linux Symposium</title>
				<meeting>the Linux Symposium</meeting>
		<imprint>
			<date type="published" when="2008">2008</date>
			<biblScope unit="volume">2</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b42">
	<analytic>
		<title level="a" type="main">of the linux and its distribution operating systems vs windows and mac operating systems</title>
		<author>
			<persName><forename type="first">S</forename><surname>Najmuddin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Atal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">A</forename><surname>Ziar</surname></persName>
		</author>
		<idno type="DOI">10.31841/KJET.2021.21</idno>
		<ptr target="https://kardan.edu.af/data/public/files/KJET-%203.1-2021-06%20Linux%20Kernel19012022120259.pdf.doi:10.31841/KJET.2021.21" />
	</analytic>
	<monogr>
		<title level="m">Comparative analysis of power consumption</title>
				<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b43">
	<analytic>
		<title level="a" type="main">Studying main differences between linux &amp; windows operating systems</title>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">T</forename><surname>Al-Rayes</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IJECS: International Journal of Electrical and Computer Sciences</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="page" from="25" to="31" />
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b44">
	<analytic>
		<title level="a" type="main">Energy efficiency of personal computers: A comparative analysis</title>
		<author>
			<persName><forename type="first">B</forename><surname>Prieto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">J</forename><surname>Escobar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Gómez-López</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">F</forename><surname>Díaz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Lampert</surname></persName>
		</author>
		<idno type="DOI">10.3390/su141912829</idno>
		<ptr target="https://www.mdpi.com/2071-1050/14/19/12829.doi:10.3390/su141912829" />
	</analytic>
	<monogr>
		<title level="j">Sustainability</title>
		<imprint>
			<biblScope unit="volume">14</biblScope>
			<biblScope unit="page">12829</biblScope>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b45">
	<monogr>
		<author>
			<persName><forename type="first">S</forename><surname>Najmuddin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Atal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">A</forename><surname>Ziar</surname></persName>
		</author>
		<ptr target="https://www.researchgate.net/publication/361225454_Comparative_Analysis_of_Power_" />
		<title level="m">Comparative analysis of power consumption of the linux and its distribution operating systems vs windows</title>
				<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b46">
	<monogr>
		<title level="m">Consumption_of_the_Linux_and_its_Distribution_ Operating_Systems_vs_Windows_and_Mac_ Operating_Systems</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b47">
	<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</meeting>
		<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b48">
	<analytic>
		<title level="a" type="main">Finding significant differences in the energy consumption when comparing programming languages and programs</title>
		<author>
			<persName><forename type="first">L</forename><surname>Koedijk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Oprescu</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICT4S55073.2022.00012</idno>
	</analytic>
	<monogr>
		<title level="m">2022 International Conference on ICT for Sustainability (ICT4S)</title>
				<imprint>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="1" to="12" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b49">
	<analytic>
		<title level="a" type="main">On haskell and energy efficiency</title>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">G</forename><surname>Lima</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Soares-Neto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Lieuthier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Castor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Melfe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Fernandes</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.jss.2018.12.014</idno>
		<ptr target="https://doi.org/10.1016/j.jss.2018.12.014" />
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">149</biblScope>
			<biblScope unit="page" from="554" to="580" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b50">
	<analytic>
		<title level="a" type="main">Haskell in green land: Analyzing the energy behavior of a purely functional language</title>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">G</forename><surname>Lima</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Soares-Neto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Lieuthier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Castor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Melfe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Fernandes</surname></persName>
		</author>
		<idno type="DOI">10.1109/SANER.2016.85</idno>
	</analytic>
	<monogr>
		<title level="m">IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER)</title>
				<imprint>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="page" from="517" to="528" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b51">
	<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>

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