AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


An Energy Aware Linter: Helping programmers make more energy efficient code on the fly

Translated title

An Energy Aware Linter

Authors

;

Term

4. term

Education

Publication year

2022

Submitted on

Pages

91

Abstract

Energiforbrug i software er blevet et vigtigt fokus. Forskere har identificeret kodemønstre, der bruger unødvendig strøm på tværs af sprog og platforme. Mange af disse code smells (problematiske kodemønstre) er blevet undersøgt, men det er mindre klart, om resultaterne overføres til andre sprog og systemer, og der findes få værktøjer til at opdage dem. Dette studie afprøver en samling code smells, som tidligere er vist at påvirke energiforbruget i Java på desktops og i C++ på indlejrede systemer, for at se om de har samme effekt i C# på et desktop-system. Vi bruger mikrobenchmarks (små, afgrænsede tests) og makrobenchmarks (større, mere realistiske systemtests). De første resultater viser, at fjernelse af flere code smells i et større system kan reducere energiforbruget med op til 23%. For at lette sådan refaktorering udvikles også en linter-lignende prototype, der kan finde disse mønstre ved hjælp af analysemotoren CodeQL.

Software energy use has become an important focus. Researchers have identified coding patterns that waste power across languages and platforms. Many of these code smells (problematic code structures) have been studied, but it is less clear whether the findings carry over to other languages and systems, and practical detection tools are scarce. This study tests a set of code smells previously shown to affect energy use in Java on desktop systems and in C++ on embedded systems, to see whether they have a similar effect in C# on a desktop system. We use microbenchmarks (small, focused tests) and macrobenchmarks (larger, more realistic system tests). Initial results show that removing several code smells from a larger system reduced energy consumption by up to 23%. To make such refactoring easier, we also prototype a linter-like tool that detects these patterns using the CodeQL analysis engine.

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