C++ High Performance. Hochleistungsberechnungen mit C++
538 Seiten
German
PDF
4.5

C++ High Performance. Hochleistungsberechnungen mit C++

C++ High Performance. Hochleistungsberechnungen mit C++

Autor:

Jahr:

Zusammenfassung:

Einleitung

Das Buch C++ High Performance (Autoren: Björn Andrist, Viktor Sehr, 2020, 538 Seiten) ist kein weiteres Lehrbuch zur Syntax der Sprache, sondern eine tiefgehende Einführung in die Kunst, schnellen und effizienten Code in C++ zu schreiben. In einer Welt, in der Leistung oft eine kritische Anforderung ist (Spiele, stark ausgelastete Server, Finanzsysteme, eingebettete Systeme), wird die Fähigkeit, nicht nur funktionierenden Code zu schreiben, sondern ihn maximal schnell zu machen, zu einer Schlüsselkompetenz. Dieses Buch bietet einen systematischen Ansatz zur Optimierung, von der Anwendungsarchitektur bis hin zu Low-Level-Tricks mit dem Prozessor.

Worum geht es in diesem Buch?

Das Buch ist in drei logische Teile gegliedert, die den Leser konsequent von allgemeinen Prinzipien zu konkreten Techniken führen.

Teil 1: Grundlagen der Leistung

Die Autoren beginnen mit grundlegenden Konzepten: Was ist Leistung, wie misst man sie, welche Engpässe gibt es. Hier werden behandelt:

  • Profiling und Benchmarking (Werkzeuge: perf, Valgrind, Google Benchmark).
  • Einfluss der Prozessorarchitektur (Pipeline, Cache, Sprungvorhersage).
  • Speicheroptimierung (Datenlokalität, Ausrichtung, Pools).

Teil 2: Fortgeschrittene C++-Techniken

Der zweite Teil widmet sich der Nutzung moderner C++-Funktionen zur Leistungssteigerung:

  • Move-Semantik und perfekte Weiterleitung (perfect forwarding).
  • Berechnungen zur Compile-Zeit (constexpr, Templates).
  • Polymorphismus ohne virtuelle Funktionen (CRTP, std::variant, std::any).
  • Smart Pointer und Ressourcenverwaltung.

Teil 3: Multithreading und Parallelität

Der letzte Teil ist der umfangreichste und praktischste. Er umfasst:

  • C++-Speichermodelle und atomare Operationen.
  • Threads, Mutexe, conditional_variable.
  • Parallele Algorithmen (std::execution::par).
  • SIMD-Instruktionen (SSE, AVX) und deren Nutzung über Intrinsics.
  • Asynchrone Programmierung (std::future, std::async).

Für wen ist dieses Buch?

Das Buch richtet sich an erfahrene C++-Entwickler, die die Sprache bereits sicher beherrschen, aber ihre Fähigkeiten auf die nächste Stufe heben möchten. Es ist nützlich für:

  • Entwickler von Spielen und Grafik-Engines.
  • Ingenieure, die an stark ausgelasteten Servern arbeiten.
  • Spezialisten für eingebettete Systeme.
  • Alle, die verstehen möchten, wie modernes C++ „unter der Haube“ funktioniert.

Was lernt der Leser?

Nach der Lektüre werden Sie in der Lage sein:

  • Die richtigen Werkzeuge für das Profiling auszuwählen und deren Ergebnisse zu interpretieren.
  • Die Cache- und Speichernutzung zu optimieren.
  • Move-Semantik und constexpr zur Beschleunigung von Code einzusetzen.
  • Effiziente Multithread-Anwendungen ohne Datenrennen und Deadlocks zu erstellen.
  • SIMD-Instruktionen für Vektorberechnungen anzuwenden.
  • Eine Architektur zu entwerfen, die von Grund auf auf Leistung ausgelegt ist.

Stärken des Buches

Der Hauptvorteil ist die praktische Ausrichtung. Jede Technik wird von realen Codebeispielen und Benchmarks begleitet, die den Leistungszuwachs zeigen. Die Autoren sagen nicht nur „mach es so“, sondern erklären warum es funktioniert, basierend auf der Architektur moderner Prozessoren. Das Buch ist in einer lebendigen Sprache geschrieben, komplexe Konzepte (z. B. das C++-Speichermodell oder SIMD) werden sehr verständlich erläutert.

Besonders hervorzuheben ist die Qualität der Beispiele: Sie sind nicht aus dem Zusammenhang gerissen, sondern stellen abgeschlossene Miniprojekte dar, die sofort in der eigenen Arbeit eingesetzt werden können.

Wem wird es empfohlen?

Ich empfehle dieses Buch uneingeschränkt allen, die in C++ programmieren und möchten, dass ihr Code maximal schnell läuft. Wenn Sie die Syntax bereits beherrschen, aber das Gefühl haben, an eine Leistungsgrenze zu stoßen, wird C++ High Performance Ihr Sprungbrett sein. Es ist nichts für Anfänger, aber für diejenigen, die bereit sind, tiefer einzutauchen.

Empfehlungen