Energieeffiziente Programmierung

Zwei KabelsträngeGute Tat für Entwicklerinnen

Weihnachten, die Zeit, in der man gern auch ein bisschen die Welt besser macht. Und für alle, die programmieren, coden, entwickeln, gibt es da ganz besondere Möglichkeiten. Doch lies selbst…

Wir im digitalen Raum tendieren gern dazu, die Auswirkungen unserer virtuellen Tätigkeiten und Aktivitäten zu unterschätzen.

Wenn es um den Klimawandel geht, haben wir hier gern mal einen blinden Fleck. Dabei brauchen z. B. KI-Anwendungen unfassbar und Suchabfragen überraschend viel Energie.

Wie kann man durch kluges Coden Energie sparen?

So, lass mal überlegen… zuerst sollte man das Rad nicht immer neu erfinden. Also sind Bibliotheken, Module, Funktionen – Wiederverwertung – schon mal eine sehr gute Idee. (Nur fallt nicht auf der anderen Seite vom Pferd – GAR KEINE Redundanz kann auch ganz schön falsch sein, vor allem bei User Interfaces. Bitte.)

Kenne Deine Hardware…

Beispiel Grafikkarte: Die Leistungsdichte der Prozessoren ist bei Vektorinstruktionswerken insgesamt viel zu hoch. Sie können mehrere Datenelemente auf einmal verarbeiten. Aber: Sobald ein Programm diese Instruktionswerke verwendet, muss die CPU weiter nach unten getaktet werden. Denn die Transistoren sind so klein und so eng gepackt, dass bei gleichzeitiger Nutzung die Abwärme so groß wird, dass mechanische oder funktionale Schäden unvermeidlich sind. Tja. Da kann man dann mal ’ne Weile grübeln, wie solche Rechenressourcen geschickt angesteuert werden können.

Ein paar tiefere Kenntnisse, inwiefern Software als Steuerungs- und Regelungstechnik verstanden werden kann, hilft da weiter. An welchen Reglern kann man denn noch so drehen? Z. B. an der Taktfrequenz der CPUs (also an den zentralen Recheneinheiten). Immer nur auf höchster Stufe zu takten ist ineffizient. Ist ein Programm immer sehr schnell, ist das so, als ob man mit dem Auto immer Vollgas gibt. Zeitlich begrenzt kann man z. B. den Takt herunterschalten, etwa wenn auf Daten gewartet wird.

Kenne Dein digitales Environment…

Manche Programmierumgebung verrät Dir sogar, wie hoch die Auslastung Deiner CPU beim Durchlauf des Programms ist (z. B. JupyterLab). Das hilft natürlich, verschiedene Varianten mal zu vergleichen. Und dann diejenige zu wählen, die am wenigsten Traffic verursacht. Feine Sache.

Noch so ein Faktor: Die Programmiersprache. Effizientere Programmiersprachen zu wählen ist da eine Option, wenn man an zentraler Stelle Entscheidungen treffen kann. Zwar sind Python, Perl & Co. recht einfach zu erlernen – sie fressen allerdings leider auch viel Energie. Günstiger ist es, C, C++ oder Rust zu verwenden als Go oder Python.

Zu diesem Thema gibt es bereits einiges an Forschung (u. a. am Umweltbundesamt). Diese Studien haben z. B. gezeigt, dass bei verschiedenen Textverarbeitungsprogrammen mit vergleichbarem Umfang das eine Programm 4x so viel Energie verbraten hat als das andere. Holla!

Ein Pythonprogramm für eine Aufgabe, die ein C++-Programm ebenfalls bewältigt, kann dafür sogar bis zu 75x so viel Energie verbrauchen. Phew!

Augenmaß und Abwägen

Es gibt auch Fälle, da kann man mit weniger effizienter Software durchaus erst mal weiter vorliebnehmen, weil am Ende der Benefit stimmt. So z. B. gibt es bei SAP Programme, die gleichzeitig wiederum effizienzfördernde Programme entwickeln können. Da liegt der Vorteil, dass eine Programmiersprache (hier: Python) weit verbreitet und relativ leicht erlernbar ist, im Ergebnis, das ganz am Ende herauskommt. (Natürlich kann und sollte man hier auch überlegen, ob dies die klügste Wahl ist oder es nicht doch eine noch bessere Alternative gibt.)

Faustformel: Wenn eine ineffiziente Standardbibliothek nur um 0,1 % besser wird, spiegelt sich dieses Ergebnis mit einem entsprechend großen Faktor in einer amtlichen Anzahl an anderen Programme wider, die diese Bib verwenden.

Ein paar Fakten

  • Sprachen wie C oder C++ können im Vergleich zu Python Energie bis zu einem Faktor 75 einsparen.
  • Javascript kommt auf den Faktor 4,5.
  • Herstellung der Hardware muss beim Energieverbrauch berücksichtigt werden. Einleuchtend: Je länger ein Gerät genutzt werden kann, desto besser ist sein ökologischer Fußabdruck. Auch wieder eine Daumenregel, manchmal lohnt auch die Erneuerung (Stichwort: Mein uralter Kühlschrank – Ihr kennt das).
  • Bibliothekselemente und andere Komponenten: Wiederverwendung multipliziert Einsparungen, so kann man großflächig effizienter werden.
  • Derzeit (2023) werden weltweit rund 7 % der Elektrizität durch den IT- und Kommunikationsbereich verbraucht. Dazu zählen neben Software Verbraucher wie Router und Netzwerke. Die konkreten Zahlen sehen je nach Quelle schon mal anders aus, der Wert gibt aber einen Eindruck.
  • Manche Firmen könnten bis zu 80 % Energie einsparen, andere vielleicht nur 2 % – in jedem Fall lohnt sich ein Blick.

Frei nach VDI nachrichten April 2023 („Der richtige Code hilft beim Klimaschutz“), ergänzt durch ein paar weitere Aspekte bzw. Fakten.

Augen-Logo Maria

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert