Open Source im professionellen Einsatz
Linux-Magazin 10/2017

Modernes C++ in der Praxis – Folge 36

Crash nach Flash

Hochperformanten Code zu schreiben, den nur Eingeweihte zu würdigen wissen, ist für Entwickler ein bisschen so, wie für Formel-1-Testpiloten mit einem neuen Motor den Rundenrekord auf dem Nürburgring zu knacken. Doch oft endet der Tuningversuch in der Leitplanke.

189

Zehn Tipps für C++-Programmierer, die guten Code produzieren wollen, hatte diese Serie vor vier Folgen postuliert (Abbildung 1). Diesmal widmet sie sich einem trügerischen Ehrgeiz, dem schon viele Performance-Junkies erlegen sind: Sie optimieren einen Code-Abschnitt mit viel Aufwand und Enthusiasmus, um das letzte Quäntchen Laufzeitvorteil herauszukitzeln. Dabei geht ihnen aber der Blick für das große Ganze verloren, weshalb sie an den falschen Stellschraube drehen oder – wie in der folgenden Fallstudie – in die falsche Richtung.

Abbildung 1: Der fünfte Leitsatz für C++-Programmierer mahnt das große Bild im Auge zu behalten.

Als Studienobjekt soll das Singleton Pattern [1] dienen. Dieses Erzeugungsmuster stellt sicher, dass nur eine Instanz eines Objekts existiert (oder dass eine Unterklassenbildung ein einziges Objekt spezialisiert). Etwa die Hälfte der Entwicklergemeinde setzt das Pattern gerne ein, bei anderen genießt es den Ruf als Anti-Pattern. Dieser Artikel will die Diskussion darum nicht weiter anfachen, sondern das Singleton Pattern als Demonstrationsobjekt für überambitionierte Performance-Optimierung heranziehen.

Klassisch angerührt

Die Herausforderung für den Programmierer eines Multithreading-Programms, in dem er das Singleton Pattern implementiert, ist es, das Singleton-Objekt Thread-sicher zu initialisieren. In modernem C++ wird er dieser Aufgabe schnell und elegant mit Hilfe von Locks gerecht. Listing 1 zeigt das Ergebnis.

[...]

Linux-Magazin Online veröffentlicht alle Print-Artikel, die seit 2001 im Linux-Magazin erschienen sind. Damit steht Ihnen ein hochwertig bestücktes Archiv bis hin zu den Beiträgen der aktuellen Ausgabe online zur Verfügung. Die über 3000 Artikel sind größtenteils kostenlos zugänglich, nur für Beiträge (als PDF) der jüngsten zehn Linux-Magazine ist eine kleine Gebühr fällig.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Künstlicher Horizont

    Die Fähigkeiten der freien 3D-Engine Ogre ziehen sogar professionelle Spiele- und Echzeitgrafik-Hersteller an. Zudem kümmert sich eine aktive Gemeinde um den leistungsstarken 3D-Motor und leistet vorbildlichen Support. Grund genug also, um einen Blick unter die Haube zu werfen.

  • Enterprise Service Bus

    Ein Enterprise Service Bus als zentrale "Autobahn" für Daten und Dienste im Unternehmen kümmert sich um die Kommunikation, erledigt aber auch Orchestrierung, Message-Routing oder Event-Analyzing. Dieser Artikel stellt drei freie Produkte anhand einfacher Einsteigerszenarien vor.

  • Reichhaltiges Angebot

    C++0x bringt nicht nur Veränderungen in der Kernsprache. Die Standardbibliothek der C++-Neuausgabe hat Multithreading, asynchrone Funktionsaufrufe, reguläre Ausdrücke und vieles mehr im Angebot.

  • C++11

    Die neue Zeitbibliothek von C++11 erweist sich als elementarer Bestandteil der Threading-Schnittstelle: Sowohl Threads, Locks und Bedingungsvariablen als auch Futures haben ein Verständnis von Zeit. Dank ihrer Unterstützung kann ein Entwickler unterschiedliche Wartestrategien verfolgen.

  • Bash Bashing

    Es gibt Dinge, die sollte im Grundsatz immer nur einer machen, etwa eine Datenbank anlegen oder einen Prozess starten. Ein Lock stellt die Solonummer sicher. Überraschend viele Implementierungen für Locks in Shellskripten sind jedoch falsch.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.