Signatur
Beschreibung
performance.clearMeasures() gehört zur User Timing API. Messungen, die du mit performance.measure() anlegst, landen als PerformanceMeasure-Objekte im Performance-Puffer der Seite. Mit clearMeasures() entfernst du sie wieder: Ohne Argument werden alle Messungen gelöscht, mit einem Namen nur die Einträge mit genau diesem Namen.
Brauchen wirst du das vor allem bei wiederholten Messungen, zum Beispiel in Single-Page-Apps, Render-Schleifen oder Benchmarks. Dort sammeln sich sonst beliebig viele Einträge an, getEntriesByName() liefert veraltete Werte mit, und der Speicherbedarf wächst. Ein typisches Muster sieht so aus: messen, auswerten (oder an ein Analyse-Backend senden), dann aufräumen.
Die Methode betrifft nur Einträge vom Typ "measure". Markierungen (PerformanceMark) bleiben erhalten und werden separat mit performance.clearMarks() entfernt. Ein PerformanceObserver, der Messungen schon empfangen hat, ist davon nicht betroffen: Gelöscht wird nur der globale Puffer, den getEntries*() abfragt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $measureName | string | undefined | Name der zu entfernenden Messungen. Fehlt der Parameter, werden alle PerformanceMeasure-Einträge gelöscht. Gibt es keinen Eintrag mit diesem Namen, passiert nichts. Es wird kein Fehler geworfen. |
Rückgabewert
undefined).Beispiele
Eine bestimmte Messung gezielt entfernen
performance.mark('start');
// ... Arbeit simulieren
for (let i = 0; i < 1e6; i++);
performance.mark('ende');
performance.measure('schleife', 'start', 'ende');
performance.measure('gesamt', 'start');
console.log(performance.getEntriesByType('measure').length);
// Nur die Messung "schleife" löschen
performance.clearMeasures('schleife');
console.log(performance.getEntriesByType('measure').map((m) => m.name));
Wiederholte Messung in einer SPA: messen, melden, aufräumen
const messeRender = async (renderFn) => {
performance.mark('render-start');
await renderFn();
performance.mark('render-ende');
const messung = performance.measure('render', 'render-start', 'render-ende');
console.log(`Render-Dauer: ${messung.duration.toFixed(1)} ms`);
// Puffer sauber halten, damit sich keine alten Werte ansammeln
performance.clearMeasures('render');
performance.clearMarks('render-start');
performance.clearMarks('render-ende');
};
await messeRender(() => new Promise((r) => setTimeout(r, 50)));
console.log(performance.getEntriesByName('render').length);
Alle Messungen auf einmal löschen
performance.measure('a');
performance.measure('b');
performance.mark('bleibt');
performance.clearMeasures(); // ohne Argument: alle Measures weg
console.log(performance.getEntriesByType('measure').length);
console.log(performance.getEntriesByType('mark').length >= 1);
// Wichtig · Fallstricke
- Nur Measures: Die zugehörigen Marks bleiben stehen. Wenn du beide aufräumen willst, rufe zusätzlich
performance.clearMarks()auf. - Alles oder nichts ohne Argument:
clearMeasures()ohne Namen löscht auch Messungen von Drittanbieter-Skripten wie Analyse- oder Monitoring-Bibliotheken. Rufe es in geteiltem Code deshalb besser immer mit einem Namen auf. - Exakter Namensabgleich: Platzhalter oder Präfixe werden nicht unterstützt. Für Muster musst du selbst über
getEntriesByType('measure')iterieren und jeden Namen einzeln löschen. - Observer: Einträge, die ein
PerformanceObserverbereits erhalten hat, werden nicht zurückgerufen. Wer ohnehin mit Observern arbeitet, braucht den Puffer oft gar nicht zu leeren. - Kompatibilität: Wird in allen modernen Browsern und in Web Workern unterstützt, in Node.js über
perf_hooks.performance(global ab Node.js 16).