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):

  1. C (1.0×)
  2. Rust (1.03×)
  3. C++ (1.34×)
  4. Ada (1.70×)
  5. 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


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)

Notatki

Elementów w folderze: 0.