Efficiency Sanitizer: Google will Performance-Lücken mit LLVM finden

Mit Werkzeugen wie dem Address-, Memory- oder auch Thread-Sanitizer können Nutzer von LLVM schon jetzt durch das Kompilieren Fehler auffinden und den Code verbessern. Der Google-Entwickler Derek Bruening schlägt nun ein weiteres derartiges Werkzeug vor(öffnet im neuen Fenster) , das zurzeit den Namen Efficiency-Sanitizer (Esan) trägt. Damit sollen Leistungsprobleme im eigenen Code aufgefunden werden können.
Bei Esan soll es sich den Plänen von Bruening zufolge um eine Sammlung kleinerer Hilfsmittel handeln, die jeweils sehr spezifische Probleme im Code auffinden können sollen. Dabei soll aber nicht nur der Fehler gefunden werden können, sondern die Sammlung soll vielmehr dabei helfen, herauszufinden, warum diese auftreten. Denn mit derzeit verfügbaren Methoden wie etwa Performance-Countern sei solch eine Kontextanalyse stark begrenzt.
Ähnliche Funktion zu bestehenden Sanitizern
Die geplanten Werkzeuge sollen einen sogenannten Schattenspeicher benutzen, in dem Metadaten über die Data-Referenzen gespeichert werden sollen, wobei der Compiler selbst das Laden und Speichern des Schattenspeichers verwalten soll. Eine dazugehörige Laufzeitbibliothek schneide zudem Aufrufe der C-Standard-Bibliothek mit ebenso wie Zuweisungen auf dem Heap oder ähnliche "Schlüssel-Ereignisse". Damit arbeite Esan sehr ähnlich zu den eingangs erwähnten Sanitizern und soll auch Code dieser Projekte wiederverwenden.
Einige Anwendungsfälle für die Werkzeuge stehen auch schon fest. So soll damit eine Fragmentierung des Caches aufgefunden werden. Ebenso sollen Informationen über die Größen einzelner Datenmengen untersucht werden können, um etwa herauszufinden, ob diese im L3-Cache Platz finden oder deutlich größer sind. Anwender sollen ebenfalls über redundante Schreibzugriffe auf den Speicher informiert werden.



