LLVM LNT: Messreihen helfen bei der Suche nach Performance-Regressionen

LLVM-Entwickler Kristof Beyls hat am 15. Juni 2016 einen Arbeitsablauf zur Performance-Analyse mit LNT vorgestellt. Der Beitrag beschreibt im Vorjahr hinzugekommene Funktionen, keine neue nummerierte Veröffentlichung. Das System unterstützt sowohl die Untersuchung bereits eingespielter Änderungen als auch den Vergleich eines Patches vor dem Commit.

Vom Tagesbericht zum einzelnen Codebereich

Ein Server nimmt Messwerte als JSON entgegen, bewertet auffällige Änderungen und stellt Ergebnisse im Browser dar. Ein separates Kommandozeilenwerkzeug führt Tests und Benchmarks aus. Tagesberichte bündeln mehrere Programme und Maschinen; Langzeitdiagramme führen zu einzelnen Testläufen und deren Profilen.

Besonders hilfreich ist der Vergleich mit dem Hash der getesteten Binärdatei. Bleibt die Datei identisch, lässt sich eine abweichende Laufzeit nicht ohne Weiteres einer Codeänderung zuschreiben. In Beyls’ Beispiel deutet die Streuung stattdessen auf Messrauschen hin. Bei tatsächlich verändertem Code ermöglichen Profile den Vergleich von Assemblerdarstellung und Kontrollfluss.

Performance-Messung ergänzt andere Qualitätsprüfungen

Beyls kombiniert LNT mit einer Bisektionssuche nach dem verantwortlichen Commit. Die Serverfunktionen sind laut Projekt nicht auf LLVM beschränkt. Anders als libFuzzer zur Suche nach Fehlern durch erzeugte Eingaben untersucht der vorgestellte Ablauf vor allem Laufzeitunterschiede. Für Entwicklerteams sind das unterschiedliche, ergänzende Prüfaufgaben.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein