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.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Lesezeit: 8 Min.
Von
  • Andreas Fertig
Inhaltsverzeichnis

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.

Mehr zum Thema Softwareentwicklung
iX-tract
  • Mit der C++-Funktion constexpr lässt sich die AusfĂĽhrungseffizienz von Programmen steigern.
  • constexpr verlagert 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.

Das war die Leseprobe unseres heise-Plus-Artikels "Softwareentwicklung: Ressourcen sparen mit der C++-Funktion constexpr". Mit einem heise-Plus-Abo können sie den ganzen Artikel lesen und anhören.