AAU Student Projects is unavailable between June 15th 1.30pm and 17th 1.30pm due to planned system maintenance. The projects cannot be downloaded during this period.
AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


Energy-Aware Static Analysis for JavaScript: Suggesting Efficient Code Patterns

Author

Term

4. term

Education

Publication year

2026

Submitted on

Abstract

Small changes in how code is written can affect how much energy a program uses. This thesis measures and compares the energy efficiency of 68 alternative JavaScript code patterns across seven JavaScript engines (the programs that run JavaScript). Unlike studies that examine full algorithms or applications, it focuses on small coding choices that produce the same result and asks whether their effects can be captured as rules for static analysis (checking code without running it). Each pattern is benchmarked repeatedly under controlled conditions, with the number of iterations increased to observe growth. Energy use, execution time, and peak memory are recorded. Iteration counts are tailored to each engine to ensure meaningful measurements. The results show large differences: efficiency depends on both the engine and the pattern. A pattern that is more efficient on one engine can be less efficient on another, while some patterns are consistently more efficient. This means general, one‑size‑fits‑all advice does not hold; rules should be derived from per‑engine measurements. Finally, the thesis shows that a pattern can be formulated as a rule that enables automatic detection of potentially inefficient code patterns without executing the code.

Små ændringer i måden, kode skrives på, kan påvirke hvor meget energi et program bruger. Denne afhandling måler og sammenligner energieffektiviteten af 68 alternative JavaScript‑kodemønstre på syv JavaScript‑motorer (programmer der kører JavaScript). I modsætning til tidligere studier af hele algoritmer eller applikationer fokuserer arbejdet på små kodemæssige valg, der giver samme resultat, og undersøger om effekterne kan udtrykkes som regler for statisk analyse (at tjekke kode uden at køre den). Hvert mønster benchmarkes gentagne gange under kontrollerede forhold, med stigende antal iterationer for at observere vækst. Energiforbrug, køretid og maksimalt hukommelsesforbrug registreres. Antallet af iterationer tilpasses hver enkelt motor for at sikre meningsfulde målinger. Resultaterne viser store forskelle: effektiviteten afhænger både af motoren og af mønsteret. Et mønster kan være mere effektivt på én motor og mindre effektivt på en anden, mens nogle mønstre konsekvent er mere effektive. Derfor holder generelle, ensartede råd ikke; regler bør baseres på målinger for den enkelte motor. Endelig viser afhandlingen, at et mønster kan formuleres som en regel, der muliggør automatisk registrering af potentielt ineffektive kodemønstre uden at køre koden.

[This abstract has been rewritten with the help of AI based on the project's original abstract]