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.

