Namensräume
Varianten
Aktionen

Zero-overhead principle

Von cppreference.com
< cpp‎ | Sprache
 
 
C++ Sprache
Allgemeine Themen
Kontrollfluss
Bedingte Ausführungsaussagen
if
Iterationsanweisungen (Schleifen)
for
Bereichs-for (C++11)
Sprunganweisungen
Funktionen
Funktionsdeklaration
Lambda-Funktionsausdruck
inline-Spezifizierer
Dynamische Ausnahmespezifikationen (bis C++17*)
noexcept-Spezifizierer (C++11)
Ausnahmen
Namensräume
Typen
Spezifizierer
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Speicherdauer-Spezifizierer
Initialisierung
Ausdrücke
Alternative Darstellungen
Literale
Boolesch - Ganzzahl - Gleitkommazahl
Zeichen - String - nullptr (C++11)
Benutzerdefinierte (C++11)
Dienstprogramme
Attribute (C++11)
Typen
typedef-Deklaration
Typalias-Deklaration (C++11)
Umwandlungen
Speicherzuweisung
Klassen
Klassenspezifische Funktionseigenschaften
explicit (C++11)
static

Spezielle Member-Funktionen
Templates
Sonstiges
 

Das Zero-overhead principle ist ein Entwurfsprinzip in C++, das besagt:

  1. Man zahlt nicht für das, was man nicht nutzt.
  2. Das, was man nutzt, ist genauso effizient wie das, was man vernünftigerweise von Hand schreiben könnte.

Im Allgemeinen bedeutet dies, dass keine Funktion zu C++ hinzugefügt werden sollte, die einen Overhead – sei es in Zeit oder Speicher – mit sich bringt, der größer ist als der, den ein Programmierer ohne die Funktion einführen würde.

Die einzigen beiden Funktionen in der Sprache, die nicht dem Zero-overhead principle folgen, sind die Laufzeit-Typidentifikation und Exceptions, und deshalb enthalten die meisten Compiler eine Option, um sie auszuschalten.

[bearbeiten] Externe Links

1.  Foundations of C++ - Bjarne Stroustrup
2.  C++ exceptions and alternatives - Bjarne Stroustrup
3.  De-fragmenting C++ - Making Exceptions und RTTI More Affordable and Usable - Herb Sutter
4.  Bjarne Stroustrup: C++ on Artificial Intelligence (AI) Podcast