Green Coding mit Oaklean:
Der grüne Blick in deinen Code

SourceFileMetaDataTree-Modell

Wie viel Energie verbraucht eigentlich dein Code? Und welche Stellen in deiner Anwendung sind die größten Stromfresser? Mit Oaklean bekommst du Antworten – direkt im Editor. Als Open-Source-Tool hilft Oaklean dir dabei, den CO₂-Fußabdruck deiner Node.js-Anwendungen zu analysieren und zu reduzieren. Und das Beste: Du musst kein Energieexperte sein, um es zu nutzen. Hier erfährst du, wie Oaklean funktioniert – einfach erklärt für JavaScript- und TypeScript-Entwickler.

Welche Maßnahmen zur Umsetzung von Green IT gibt es?

Neben einer effizienten Infrastruktur, schlankem Code und bedarfsgerechtem skalieren ist es besonders entscheidend, den Ressourcenverbrauch sichtbar zu machen. Genau hier setzt Oaklean an: Unser Tool misst, wie ressourcenintensiv einzelne Teile deiner Anwendung sind – egal ob eigene Funktionen, externe Libraries oder Node.js-Funktionen. Es zeigt dir an, welcher Code wie viel CPU-Zeit und Energie verbraucht. Die Ergebnisse werden dir direkt in Visual Studio Code angezeigt – übersichtlich, farblich hervorgehoben und auf Zeilenebene.

Green IT Oaklean Profiler_2

Wie funktioniert das?

Oaklean besteht aus einer Reihe an Komponenten, die nötig sind, um von der Code Ausführung zu einer Visualisierung des Energieverbrauchs zu kommen.

Die Architektur von Oaklean lässt sich bildlich als Baum darstellen: Von tief verankerten Wurzeln über einen stabilen Stamm bis hin zu den sichtbaren Blättern, mit denen Entwickler direkt interagieren. Jeder Teil dieses Baumes spielt eine zentrale Rolle im Prozess der Energieanalyse von Node.js-Anwendungen.

Wurzeln: Wo die Daten entstehen

Am Ursprung des Systems stehen drei Datenquellen, die als Grundlage der Analyse dienen:

  • Source Code: Oaklean greift auf den Quellcode zu, entweder direkt aus dem Dateisystem oder über die Node.js-Engine. Der Code wird geparst und kontextsensitiv indiziert.

  • CPU Profile: Mithilfe der V8 JavaScript-Engine werden Informationen zur genutzten CPU-Zeit und zum Aufrufverhalten von Funktionen gesammelt. Diese Profile zeigen, wann welche Funktion wie lange ausgeführt wurde.

  • Energiemessung: Über verschiedene Energie-Mess-Schnittstellen werden Energieverbrauchswerte erhoben. Je nach Plattform kommen verschiedene Tools zum Einsatz, z. B. perf unter Linux, powermetrics auf macOS oder LibreHardwareMonitor unter Windows. Dabei werden sowohl systemweite als auch prozessspezifische Werte erhoben.

Green-IT-Baumdiagramm

Stamm: Die Analyse und Zuordnung

Aus diesen Rohdaten entsteht im „Stamm“ das eigentliche Analysemodell:

  • SourceMap-Auflösung: Falls der ausgeführte Code transpiliert oder gebundelt wurde, helfen SourceMaps, den Ursprung der Funktionen im Original-Code wiederzufinden.

  • TypeScript Parser: Der Parser analysiert die Struktur des Codes und vergibt kontextbasierte Identifikatoren für jede Funktion – unabhängig von Umbenennungen oder Verschiebungen im Projektverlauf.

  • Messdaten-Modell: Die gemessenen Energie- und CPU-Werte werden den entsprechenden Funktionen im Quellcode zugeordnet. Daraus entsteht ein präzises Datenmodell, das aufzeigt, welche Komponenten wie viel Energie und Rechenzeit verbrauchen.

  • Projektstruktur-Modell: Zusätzlich werden diese Daten auf die Ordnerstruktur des Projekts abgebildet. So erkennt man auf einen Blick, welche Bereiche – z. B. src, node_modules oder bestimmte Node.js-Funktionen – besonders energieintensiv sind.

Blätter: Die Sicht des Entwicklers

Ganz oben in der Baumstruktur finden sich die Schnittstellen, mit denen Entwickler direkt arbeiten:

  • Die VS Code Extension visualisiert die Ergebnisse direkt im Editor: Funktionen mit hohem Energieverbrauch werden hervorgehoben.

  • Eine strukturierte Graph-Darstellung zeigt die Interaktion und Verbrauchswerte von Funktionen, Komponenten und Bibliotheken.

  • Auch Testframeworks können angebunden werden, um gezielt bestimmte Anwendungsfälle zu messen und zu analysieren.

Vom Code zum Energieverbrauch im Editor

Die Grundbausteine von Oaklean wurden nun vorgestellt und deren Funktion näher beschrieben. Doch wie funktioniert das eigentlich genau – und wie entsteht am Ende eine Visualisierung, die direkt im Codeeditor auf energie-intensive Codestellen hinweist?

Green Coding Oaklean Profiler_1
Green IT Oaklean Profiler_2

1. Messung: CPU-Zeit und Energieverbrauch

Beim Start beginnt Oaklean mit zwei parallelen Messprozessen:
  • CPU-Profiling: Die V8-Engine misst, wie viel Rechenzeit einzelne Funktionen beanspruchen.

  • Energiemessung: Ein SensorInterface erfasst den Energieverbrauch des gesamten Systems oder des Node.js-Prozesses. Je nach Betriebssystem nutzt Oaklean dazu unterschiedliche Tools (z. B. powermetrics auf macOS oder perf unter Linux).

Green_IT_Messung_Energieverbrauch
Green-Coding-Messung-CPU-Zeit

Auf Basis dieser Daten wird anschließend der Energieverbrauch der einzelnen Funktionen näherungsweise bestimmt. Das Verfahren dazu beruht auf der Annahme, dass sich der Energieverbrauch proportional zur CPU-Auslastung verteilt. Damit lautet die Formel zur Bestimmung des Energieverbrauchs:

Diese Berechnung ermöglicht eine feingranulare Zuordnung des Energieverbrauchs zu spezifischen Funktionen, ohne dass eine separate Energiedirektmessung auf Funktionsebene notwendig ist. 

2. Code-Verknüpfung: Vom Profil zur Quelle

Nach dem Stoppen der Messung beginnt die Auswertung. Die ausgeführten Dateien werden nun ermittelt und ihr Source Code geparst:

Green-Coding-Code-Verknüpfung
Falls der analysierte Code transpiliert wurde (z. B. TypeScript → JavaScript), nutzt Oaklean SourceMaps, um von der ausgeführten Datei zurück auf den Original-Sourcecode zu schließen:
Source-Maps-Analyse-Green-Code
Green Coding Typescript Parser

Mit einem TypeScript-Parser wird der Quellcode analysiert und der Abstrakte Syntax Baum ermittelt, um Funktionsdefinitionen eindeutig identifizieren zu können:

Abtraker-Syntax-Baum-(AST)-Green-IT

Danach wird der Code indiziert: Mithilfe des Abstrakten Syntax Baums werden neue eindeutige, kontextbasierte Identifikatoren an Funktionen vergeben, um diese über Versionen hinweg wiedererkennbar zu machen – auch bei Umstrukturierungen im Code.

Abtraker-Syntax-Baum-(AST)-Green-Coding

3. Zuordnung: Energieverbrauch pro Funktion

Mit allen in den vorherigen Schritten gesammelten Informationen wird berechnet, wie viel Energie jede Funktion verbraucht hat. Die Schätzung basiert auf dem Verhältnis ihrer CPU-Zeit zur Gesamt-CPU-Zeit im Messintervall – multipliziert mit dem gemessenen Energieverbrauch. So entsteht ein präzises Modell, das den Energieverbrauch jeder Funktion darstellt

Energieverbrauch-Modell-–-Green-Coding-Funktion

4. Strukturierung: Das SourceFileMetaDataTree-Modell

Oaklean organisiert die Ergebnisse in einem hierarchischen Model. Dieser bildet die Projektstruktur ab (Dateien, Ordner, node_modules, Funktionen) und weist jeder Ebene die Messwerte zu nach:

  • dem eigenen Verbrauch

  • dem kumulierten Verbrauch aller Unterelemente

  • dem Verbrauch externer Komponenten

  • dem Verbrauch Node.js-interner-Funktionen

SourceFileMetaDataTree-Modell

5. Visualisierung in VS Code

Am Ende wird das Datenmodell in einer .oak-Datei gespeichert. Die Oaklean VS Code Extension liest diese Datei ein und visualisiert die Ergebnisse direkt im Codeeditor. Funktionen mit besonders hohem Energieverbrauch werden markiert – Entwickler sehen so sofort, wo sich eine Optimierung lohnt.

Green IT Oaklean Profiler_2

Green Coding bedeutet: grüner denken, besser coden

Oaklean zeigt, dass nachhaltige Betrachtungen nicht bei der Infrastruktur aufhören – sondern schon im Code beginnen. Indem du verstehst, welche Teile deiner Anwendung besonders energieintensiv sind, entwickelst du ein neues Bewusstsein für die versteckten Auswirkungen von Software. Oaklean hilft dir dabei, diese Transparenz zu schaffen – direkt im Editor, ohne Umwege.

Ein grüner Blick in den Code lohnt sich.