Energy efficiency across programming languages: how do energy, time, and memory relate?

Metadane

  • Autorzy: Rui Pereira, Marco Couto, Francisco Ribeiro, Rui Rua, Jácome Cunha, João Paulo Fernandes, João Saraiva
  • Rok: 2017
  • Źródło: Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering (SLE 2017)
  • DOI: 10.1145/3136014.3136031
  • Status: to-read
  • Kategoria główna: Systems
  • Podkategorie: Green Computing, Programming Languages, Benchmarking
  • Tagi: #energy-efficiency #programming-languages #RAPL #benchmark #green-software #measurement #project:js-runtime-energy

Streszczenie

Przełomowa praca porównująca 27 języków programowania pod kątem efektywności energetycznej, czasu wykonania i zużycia pamięci. Autorzy korzystają z Computer Language Benchmarks Game (CLBG) jako zbioru standaryzowanych zadań obliczeniowych i mierzą zużycie energii przy pomocy Intel RAPL (Running Average Power Limit). Praca tworzy ranking języków według energii, pokazując że zależność energie–czas jest nieliniowa.

Wyniki są zaskakujące: języki wolniejsze nie zawsze zużywają mniej energii, a języki szybkie (C, C++) są jednocześnie najbardziej efektywne energetycznie. JavaScript wypada przeciętnie, ale istotne są różnice między silnikami V8 (Node.js) a innymi implementacjami. Praca wprowadza metodologię mierzenia energii programów komputerowych, która stała się standardem w tej dziedzinie.


Kluczowe Wnioski

  • C jest najefektywniejszy energetycznie — baseline dla wszystkich innych języków
  • JavaScript (Node.js) zajmuje środkową pozycję: 4x droższy energetycznie niż C, ale tańszy niż Python, Ruby, Perl
  • Związek energia–czas nie jest liniowy: wolniejszy ≠ tańszy energetycznie
  • Zużycie pamięci koreluje z zużyciem energii, ale nie determinuje jej
  • Metodologia: Intel RAPL + CLBG benchmarks (10 problemów algorytmicznych)
  • 27 języków porównanych na tej samej platformie sprzętowej

Metodologia

  • Platforma: Intel Core i5-4460, 16 GB RAM, Ubuntu 14.04
  • Pomiar energii: Intel RAPL (pkg + uncore + DRAM) przez perf stat
  • Benchmarki: 10 zadań z Computer Language Benchmarks Game (mandelbrot, n-body, regex, etc.)
  • Protokół: 10 powtórzeń, mediana, eliminacja outlierów
  • Normalizacja: wyniki względem C (baseline = 1.0)
  • Narzędzie: framework automatyczny mierzący energia + czas + pamięć

Główne Koncepcje

  • RAPL (Running Average Power Limit): interfejs Intel do odczytu zużycia energii CPU i DRAM w czasie rzeczywistym
  • Computer Language Benchmarks Game (CLBG): standaryzowany zbiór implementacji 10 algorytmów w wielu językach, z rygorystycznymi regułami implementacji
  • Energy × Time × Memory trade-off: trójwymiarowa przestrzeń decyzyjna przy wyborze języka

Wyniki

JęzykEnergia (× C)Czas (× C)
C1.01.0
Rust~1.03~1.04
Java~1.98~1.89
JavaScript (Node.js)~4.45~6.52
Python~75.88~71.90

JavaScript używa ~4.45× więcej energii niż C, co jest lepszym wynikiem niż większość języków interpretowanych.


Przydatne Cytaty

“The results show interesting findings, such as how slower/faster languages can consume less/more energy.” (Abstract)

“energy consumption is dominated by the instruction-level behavior of the program, not simply by execution time” (Section 4)


Datasety


Powiązane Tematy

  • Ranking języków energetycznych (Pereira 2021 — rozszerzenie tej pracy)
  • WebAssembly vs JavaScript energia (De Macedo 2022)
  • RAPL jako narzędzie pomiarowe (Noureddine 2022 — PowerJoular)
  • Node.js vs Deno vs Bun energy (gap — JE-1)

Notatki

Elementów w folderze: 0.