An energy-oriented look into memoizability, using static analysis
Author
Constantin, Theodor
Term
4. term
Education
Publication year
2021
Submitted on
2021-06-14
Pages
56
Abstract
I takt med at fokus på energiforbrug i digital teknologi er vokset, er et hul blevet tydeligt: Udviklere mangler praktiske værktøjer til at skrive energieffektiv software. Dette speciale præsenterer grint, en grøn linter til JavaScript. Som en almindelig linter analyserer den koden, men med energiforbrug for øje. grint finder funktionelt rene funktioner (funktioner uden bivirkninger, som altid giver samme resultat for samme input), der potentielt kan optimeres med memoisering (at gemme tidligere resultater for at undgå gentagne beregninger). For at vurdere grint og memoisering som energioptimering refaktorerede jeg to open source-projekter og sammenlignede de originale og memoiserede versioner i et kontrolleret forsøg. Energiforbruget blev målt med Intels RAPL, en hardwarebaseret metode til at spore strømforbrug på Intel-CPU'er. På tværs af tests brugte de memoiserede versioner konsekvent mere energi end de originale. Det tyder på, at det er mere komplekst at afgøre, hvornår en JavaScript-funktion er egnet til memoisering; funktionel renhed kan være nødvendig, men er ikke tilstrækkelig til at forudsige energibesparelser.
As concern about the energy use of digital technology has grown, a gap has become clear: developers lack practical tools to help write energy-efficient software. This thesis presents grint, a green linter for JavaScript. Like a standard linter, it analyzes code, but with energy in mind. grint identifies functionally pure functions (no side effects and the same output for the same input) that might be optimized by memoization (caching results to avoid repeated work). To evaluate grint and memoization as an energy optimization, I refactored two open-source projects and compared the original and memoized versions in a controlled experiment. Energy use was measured with Intel's RAPL, a hardware-based method for tracking power on Intel CPUs. Across tests, the memoized versions consistently consumed more energy than the originals. This suggests that deciding when a JavaScript function is suitable for memoization is more complex than checking purity alone; purity may be necessary but is not sufficient to predict energy savings.
[This summary has been rewritten with the help of AI based on the project's original abstract]
Keywords
Documents
