Start · Sprachen · JavaScript · Referenz · Performance.clearMeasures()

Performance.clearMeasures()

Methode

Entfernt alle oder nur die gleichnamigen <code>PerformanceMeasure</code>-Einträge aus dem Performance-Puffer (der Zeitachse) des Browsers.

seit JavaScript Baseline: alle Browser (User Timing Level 1), Node Kategorie: webapi

Signatur

Performance.prototype.clearMeasures(measureName)

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

Typ
void
Beschreibung
Kein 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));
2 ["gesamt"]

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);
Render-Dauer: 50.3 ms 0

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);
0 true

// 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 PerformanceObserver bereits 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).