Sorgfältiger Umgang mit Ressourcen

Der sorgfältige Umgang mit Ressourcen, sei es Speicher, Dateien oder Sockets, ist zentral für die Programmierung in C++. Das gilt insbesondere für die embedded Programmierung, da sich diese gerne durch eingeschränkte Ressourcen auszeichnet. Daher will ich mich diesem vielschichtigen und anspruchsvollen Thema in mehreren Artikeln widmen.

Weiterlesen...
Gelesen: 10241

Acquire-Release-Semantik - Der typische Fehler

Eine release-Operation synchronizes-with einer acquire-Operation auf der gleichen atomaren Variable. Damit lassen sich Threads einfach synchronisieren, wenn ... . Auf dieses wenn will ich tiefer eingehen.

Weiterlesen...
Gelesen: 12298

Erweiterte Plain Old Data

Plain Old Data (PODs) folgen dem C-Standardlayout. Damit können sie direkt mit den performanten C-Funktionen memcopy oder memmove kopiert, mit memset initialisiert oder auch mit memcmp verglichen werden.

Weiterlesen...
Gelesen: 10286

Buckets, Kapazität und Ladefaktor

Die Hashfunktion bildet die potentiell unendliche Anzahl von Schlüssel auf eine endliche Anzahl von Buckets ab. Welche Strategie dabei die C++-Laufzeit verfolgt und wie diese angepasst werden kann, zeigt dieser Artikel.

Weiterlesen...
Gelesen: 11425

Hashfunktionen

Der entscheidende Grund für die konstante Zugriffszeit der ungeordneten assoziativen Container sind deren Hashfunktionen. In bekannter Manier bietet C++ viele Stellschrauben für Hashfunktionen an. Einerseits bringt C++ einen reichen Satz an Hashfunktionen mit, andererseits lassen sich auch eigene Hashfunktionen verwenden. Selbst die Verteilung der Hashwerte auf die Buckets kann angepasst werden.

Weiterlesen...
Gelesen: 14975

Hashtabellen - Ein einfacher Performanzvergleich

Bevor ich das Interface der Hashtabellen - offiziell ungeordnete assoziative Container genannt- genauer betrachte, will ich ihre Performanz mit der der geordneten assoziativen Container vergleichen. Die idealen Kandidaten dafür sind die std::unordered_map und ihr geordneter Pendant die std::map, da sie von allen assoziativen Containern am häufigsten zum Einsatz kommen.

Weiterlesen...
Gelesen: 12666

Hashtabellen

Hashtabellen wurden in C++ lange vermisst. Versprechen sie doch konstante Zugriffszeit auf ihre Elemente. C++11 besitzt jetzt Hashtabellen in vier Variationen. Offiziell heißen sie ungeordnete assoziative Container, inoffiziell werden sie auch Dictionaries oder einfach nur assoziative Arrays genannt.

Weiterlesen...
Gelesen: 13372

Type-Traits - Performanz zählt

Type Traits offenbaren bei genauen Hinblick ein großes Optimierungspotential. Da die Type-Traits Bibliothek es erlaubt, im ersten Schritt den Code zu Compilezeit zu analysieren, kann dieser im zweiten Schritt optimiert werden. Wie ist das möglich? Abhängig vom Typ einer Variable wird eine besondere, schnelle Variante eines Algorithmus gewählt.

Weiterlesen...
Gelesen: 11278

constexpr Funktionen

constexpr Funktionen sind Funktionen, die zur Compilezeit ausgeführt werden können. Hört sich erst mal nicht so spannend an. Ist es aber, denn durch constexpr Funktionen können Berechnungen auf die Compilezeit verschoben werden. Damit stehen deren Ergebnisse als Konstanten im ROM zur Laufzeit zur Verfügung. Darüber hinaus sind constexpr Funktionen implizit inline.

Weiterlesen...
Tags: constexpr
Gelesen: 13502

Mentoring

Stay Informed about my Mentoring

 

Rezensionen

Tutorial

Besucher

Heute 737

Gestern 1476

Woche 9019

Monat 26346

Insgesamt 3363029

Aktuell sind 154 Gäste und keine Mitglieder online

Kubik-Rubik Joomla! Extensions

Abonniere den Newsletter (+ pdf Päckchen)

Beiträge-Archiv

Sourcecode

Neuste Kommentare