C++-Tricks: Micro-Benchmarking mit der Google Benchmark Library

Die Performance von Code zu ermitteln ist normalerweise aufwendig. Mit der Google Benchmark Library erfordert Micro-Benchmarking in C++ nur wenige Zeilen.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Micro-Benchmarking mit der Google Benchmark Library
Lesezeit: 18 Min.
Von
  • Detlef Wilkening
Inhaltsverzeichnis

Wenn es um C++ geht, dann spielen häufig Kontrolle und Performance eine große Rolle in der Diskussion. Sicher gibt es Programmiersprachen, die einfacher zu lernen sind oder in bestimmten Anwendungsbereichen Vorteile bieten. Wenn es aber um Kontrolle über das Speicherlayout und das erzeugte Kompilat oder einfach um die beste Performance geht, stehen immer noch C und C++ ganz vorne. Darum bilden C- und C++-Programme nach wie vor das Rückgrat der IT, in Form von Betriebssystemen, Treibern, Embedded-Systemen, Systemprogrammen und vielem mehr.

Es gibt in C++ viele Sprachmittel, Idiome, Tipps und Tricks, die sich alle um Performance drehen. So interessant diese Perspektiven sind: Hier geht es darum zu klären, wie verifiziert werden kann, ob ein Code performanter ist als ein anderer, der die gleiche Aufgabe löst. Das ist die typische Frage vieler Programmierer, für die optimale Performance ein Thema ist.

Man kann ein Problem auf viele Arten lösen, aber welche Implementierung ist unter dem Gesichtspunkt der Performance die beste? Wie viel Einfluss hat eine zusätzliche Abfrage oder ein virtueller Funktionsaufruf auf die Performance? Ist ein Algorithmus schneller oder langsamer als eine handgeschriebene Schleife? Verbessert die Small String Optimization (SSO) oder die Vorallokation eines Vektors wirklich die Performance, und wenn ja, wie sehr? Bei solchen Fragen hilft eine Messung der Gesamtperformance eines Programms wenig. Was benötigt wird, ist ein Micro-Benchmark-Framework wie die Google Benchmark Library.