Softwareentwicklung: Ressourcen sparen mit der C++-Funktion constexpr
Um ressourcenschonend zu programmieren, genügen schon kleine Veränderungen im Code. Der richtige Einsatz der Funktion constexpr nutzt RAM und ROM effizient.
- Andreas Fertig
Schon seit Version 11 kann C++ Dinge zur Kompilierzeit berechnen. Seitdem haben sich die damit verbundenen Möglichkeiten mit jeder neuen Version erweitert. War anfänglich nur eine rekursive Funktion mit einem return und einer Kontrollanweisung möglich, liegt in C++23 der Unterschied fast nur noch darin, ob die Funktion dynamischen Speicher verwendet.
Seit C++20 ist dies zwar möglich, allerdings ist der angeforderte Speicher auch wieder zur Kompilierzeit freizugeben. Ziel einer constexpr-Funktion ist es immer, zur Kompilierzeit einen Wert zu produzieren. In manchen Fällen bedeutet das, die Werte einer ganzen Klasse zur Kompilierzeit auszurechnen.
- Mit der C++-Funktion
constexprlässt sich die Ausführungseffizienz von Programmen steigern. constexprverlagert Berechnungen von der Lauf- zur Kompilierzeit, was zu schnellerer Ausführung und reduziertem Speicherverbrauch führt.- Der Compiler kann die Ergebnisse der
constexpr-Funktionen effizienter verwalten, da sie bereits zur Kompilierzeit bekannt sind. - Geschickter Code vermeidet unnötiges Kopieren von Daten.
Berechnungen zur Kompilierzeit kosten keine Laufzeit. Für vermutlich alle Software gilt, dass Benutzer sie öfter verwenden. Anwender profitieren häufig von schnelleren Boot- und Laufzeiten sowie längerer Batterielaufzeit. Allerdings sind die Möglichkeiten schwer zu demonstrieren. Ein Beispiel zeigt, wie sich der Einsatz von constexpr positiv ausgewirkt.