Ranking programming languages by energy efficiency
Metadane
- Autorzy: Rui Pereira, Marco Couto, Francisco Ribeiro, Rui Rua, Jácome Cunha, João Paulo Fernandes, João Saraiva
- Rok: 2021
- Źródło: Science of Computer Programming, vol. 205, Elsevier
- DOI: 10.1016/j.scico.2021.102609
- PDF: https://www.sciencedirect.com/science/article/pii/S0167642321000022
- Status: to-read
- Kategoria główna: Systems
- Podkategorie: Green Computing, Programming Languages, Benchmarking
- Tagi:
#energy-efficiency#programming-languages#RAPL#benchmark#green-software#ranking#project:js-runtime-energy - Cytowania: 172
Streszczenie
Rozszerzona wersja pracy Pereira 2017 opublikowana w Science of Computer Programming. Porównuje 27 języków programowania pod kątem energii, czasu i pamięci na zbiorze 10 zadań CLBG. Dodatkowo waliduje wyniki na repozytorium Rosetta Code, potwierdzając stabilność rankingów. Praca zawiera analizę wielokryterialną i proste narzędzie wspomagające wybór języka ze względu na efektywność energetyczną.
Kluczowe rozszerzenia wobec SLE 2017: (1) analiza statystyczna istotności różnic, (2) walidacja na Rosetta Code (bardziej realistyczne implementacje niż rygorystyczne CLBG), (3) systematyczna analiza zależności energy–time–memory, (4) rekomendacje dla praktyków.
Kluczowe Wnioski
- Rankingi są stabilne niezależnie od użytego repozytorium benchmarków (CLBG vs Rosetta Code)
- Wyjątek: jeden język zmienia pozycję między zbiorami (implementacje Rosetta Code mniej rygorystyczne)
- Języki kompilowane statycznie (C, C++, Rust, Fortran) dominują ranking efektywności
- Języki JIT-kompilowane (Java, JavaScript, C#) są w środku stawki
- Języki interpretowane (Python, Ruby, PHP) są najgorsze energetycznie
- Narzędzie do analizy wielokryterialnej energy+time+memory umożliwia świadomy wybór języka
Metodologia
- Identyczna jak Pereira 2017: RAPL + CLBG
- Walidacja: 10 zadań z Rosetta Code (>150 języków, mniej rygorystyczne implementacje)
- Analiza statystyczna: Mann-Whitney U test, efekt Cohena
- Framework: automatyczny system mierzenia energy/time/memory (open-source)
Główne Koncepcje
- Multi-criteria ranking: TOPSIS-like podejście do rankowania języków wg wielu metryk
- Rosetta Code vs CLBG: Rosetta Code = bardziej realistyczne implementacje, CLBG = bardziej rygorystyczne reguły
- Znaczenie walidacji: rankingi z jednej metodologii powinny potwierdzać się na innej
Wyniki
Ranking energetyczny (TOP 5 i JavaScript):
- C (1.0×)
- Rust (1.03×)
- C++ (1.34×)
- Ada (1.70×)
- Java (1.98×) … JavaScript (Node.js): ~4.45×
JavaScript jest 15. językiem w rankingu energetycznym (na 27) — lepszy niż większość języków interpretowanych, gorszy niż JVM i natywne.
Przydatne Cytaty
“Our results show that the rankings do not change apart from one programming language [between CLBG and Rosetta Code].” (Abstract)
“We also present a simple way to use our results to provide software engineers and practitioners support in deciding which language to use when energy efficiency is a concern.” (Abstract)
Datasety
- CLBG: https://benchmarksgame-team.pages.debian.net/benchmarksgame/
- Rosetta Code: https://rosettacode.org/
- Dane eksperymentalne: https://sites.google.com/view/energy-efficiency-languages
Powiązane Tematy
- Pereira 2017 (poprzednia wersja — SLE)
- WebAssembly vs JavaScript (De Macedo 2022)
- Node.js vs Deno vs Bun energy — gap badawczy (#JE-1)
- Metodologia RAPL (PowerJoular — Noureddine 2022)