C++ Benchmark: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Die Benchmark-Bibliothek (Google Benchmark) für C++: Eine vollständige Anleitung

Willkommen bei PythonLib! Heute tauchen wir in die Welt des leistungsstarken C++ ein und erkunden die Benchmark-Bibliothek (auch bekannt als Google Benchmark). Dieses Tool ist unverzichtbar für jeden Entwickler, der schnellen und effizienten Code schreiben möchte. In diesem Artikel behandeln wir alles: von der Installation über fortgeschrittene Methoden bis hin zu praktischen Beispielen.

1. Was ist das und warum braucht man es?

Google Benchmark ist eine Bibliothek für Microbenchmarking in der Sprache C++. Sie bietet ein leistungsstarkes und flexibles Framework zur Messung der Performance kleiner Codeabschnitte (Funktionen, Algorithmen, Container). Im Gegensatz zu einfachen Zeitmessungen mit std::chrono löst Benchmark automatisch viele Probleme: Cache-Warming, Vermeidung von Compiler-Optimierungen, statistische Auswertung der Ergebnisse und vieles mehr.

Warum ist das wichtig? In der modernen Softwareentwicklung ist Performance oft entscheidend. Ohne präzise Messungen riskieren Sie:

  • Die falsche Optimierung: Zeit in die Verbesserung von Code zu investieren, der ohnehin schnell läuft, während der Engpass an einer anderen Stelle liegt.
  • Verschlechterung der Performance: Änderungen vorzunehmen, die logisch erscheinen, aber den Code aufgrund von CPU-Architektur oder Compiler-Verhalten tatsächlich verlangsamen.
  • Falsche Architekturentscheidungen: Einen Algorithmus oder eine Datenstruktur basierend auf Intuition statt auf Fakten auszuwählen.

Die Benchmark-Bibliothek löst diese Probleme, indem sie eine zuverlässige, reproduzierbare und statistisch fundierte Methode zur Performance-Messung bietet. Sie wird von Giganten wie Google, LLVM, Facebook und vielen Open-Source-Projekten eingesetzt.

2. Installation

Die Installation der Benchmark-Bibliothek kann auf verschiedene Weise erfolgen. Wir betrachten die zwei gängigsten: über den Paketmanager vcpkg und den Build aus den Quellen mit CMake.

Methode 1: Installation über vcpkg (empfohlen)

vcpkg ist ein plattformübergreifender Paketmanager für C++. Falls noch nicht installiert, folgen Sie der Anleitung auf der offiziellen Webseite.

Nach der Installation von vcpkg führen Sie folgenden Befehl aus:

vcpkg install benchmark

Zur Integration in Ihr CMake-Projekt fügen Sie in CMakeLists.txt hinzu:

find_package(benchmark REQUIRED)
target_link_libraries(your_target benchmark::benchmark)

Methode 2: Build aus den Quellen

Wenn Sie alles manuell bauen möchten oder vcpkg nicht nutzen, folgen Sie diesen Schritten:

# Repository klonen
git clone https://github.com/google/benchmark.git
cd benchmark

# Build-Verzeichnis erstellen
mkdir build && cd build

# Bibliothek konfigurieren und bauen
cmake .. -DCMAKE_BUILD_TYPE=Release -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON
make -j$(nproc)

# Installieren (optional, die Bibliothek kann auch direkt genutzt werden)
sudo make install

Nach der Installation können Sie die Bibliothek einbinden, indem Sie die Pfade zu den Header-Dateien und Bibliotheken in Ihrem Projekt angeben.

3. Schnellstart – Ein minimales Arbeitsbeispiel

Schreiben wir einen einfachen Benchmark, der die Geschwindigkeit der Addition zweier Zahlen misst.

#include <benchmark/benchmark.h>

// Die zu messende Funktion
static void BM_Addition(benchmark::State& state) {
    int a = 5;
    int b = 10;
    int result = 0;
    for (auto _ : state) {
        // Der Code innerhalb dieser Schleife wird gemessen
        result = a + b;
        // Wichtig: Der Compiler könnte 'result' optimieren, wenn es nicht verwendet wird.
        // Wir verwenden benchmark::DoNotOptimize, um dies zu verhindern.                    

Empfehlungen