Intel C++-Compiler und VTune für Linux

Erweiterte Features

Bei einer Reihe von Optimierungen, etwa hinsichtlich Schleifen, kann der Compiler nur Annahmen treffen. Hier können Sie entweder mittels spezieller pragma-Anweisungen im Sourcecode Hilfestellung geben oder mittels der so genannten "Profile Guided Optimization" (PGO) noch ein weiteres Quäntchen Performance herauskitzeln.

Bei Ersterem teilen Sie beispielsweise dem Compiler mittels der Anweisung

#pragma loop count (n)

mit, dass die folgende Schleife wahrscheinlich n-mal durchlaufen wird. Das vereinfacht dem Compiler die Optimierungsarbeit.

Die Optimierung per PGO ist ein mehrstufiger Prozess. Hier wird zunächst ein spezielles Binary erzeugt, das Informationen über Häufigkeit von Funktionsaufrufen, Schleifendurchläufen oder Ähnlichem mitprotokolliert. Dazu ist das Programm mit dem Schalter -prof_gen zu kompilieren und dann mit einem typischen Datensatz zu durchlaufen. Danach kann man das endgültige Binary unter Einbeziehung der gewonnenen Informationen mit dem Schalter -prof_use erzeugen. Über das Tool profmerge lassen sich auch Messungen mit einer Reihe von verschiedenen Datensätzen machen, die dann zusammen für die Optimierung hinzugezogen werden.