JS Self-Profiling API

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die JS Self-Profiling API ermöglicht es einer Website, einen Sampling-Profiler auszuführen, um zu verstehen, wo sie JavaScript-Ausführungszeit verbringt.

Konzepte und Nutzung

Um ein Profil zu starten, erstellt eine Website eine Profiler-Instanz. Sobald die Instanz erstellt ist, beginnt sie mit der Probenahme des JavaScript-Ausführungskontextes.

Um die Sammlung von Proben zu stoppen und das Profil abzurufen, ruft die Website Profiler.stop() auf. Dies gibt ein Promise zurück, das ein Objekt mit den Profildaten auflöst.

Zum Beispiel erstellt die folgende Funktion einen Profiler, ruft dann eine Funktion genPrimes() auf, stoppt anschließend den Profiler und ruft die Profildaten ab:

js
async function profileGeneratePrimes() {
  const profiler = new Profiler({ sampleInterval: 10, maxBufferSize: 10000 });

  genPrimes();

  const trace = await profiler.stop();
  console.log(trace);
}

Der Profiler ist ein Sampling-Profiler: das bedeutet, dass er periodisch den aktuellen Zustand des JavaScript-Call Stacks aufzeichnet (oder abfragt). Das Profil besteht aus der Sammlung dieser Proben. Dies ermöglicht es Ihnen zu verstehen, wo das Programm statistisch gesehen die meiste Zeit verbringt.

Um genau zu verstehen, was ein Profil enthält und wie es formatiert ist, siehe Profile anatomy and format.

Best Practices für das Profiling

Das Sammeln und Verarbeiten von Profildaten führt zu einem eigenen Leistungsaufwand, und Entwickler sollten darauf achten, diesen zu verwalten. Praktiken zur Minimierung des Leistungsaufwands umfassen:

  • Verwenden Sie die Optionen maxBufferSize und sampleInterval, um zu steuern, wie viele Proben genommen werden und wie oft die Probenahme erfolgen soll.
  • Nehmen Sie Proben für kurze Zeiträume auf eine gesampelte Weise: zum Beispiel, indem Sie für 5 Sekunden von jeder 60 Sekunden verfolgen.
  • Verarbeiten Sie die Proben in einem Web Worker, um die Leistung auf dem Haupt-Thread nicht zu beeinträchtigen.
  • Aggregieren Sie Proben auf dem Client, bevor Sie sie an einen Telemetrie-Endpunkt senden.

Wenn das JavaScript auf Ihrer Seite minifiziert ist, müssen Sie die Profildaten basierend auf einer Source Map entweder auf dem Client oder auf dem Server transformieren, bevor die Daten verwendbar sind.

Schnittstellen

Profiler Experimentell

Die Profiler-Schnittstelle wird zum Erstellen von Profilen verwendet.

Sicherheitsanforderungen

Um diese API zu verwenden, muss das Dokument mit einer Dokumentrichtlinie bereitgestellt werden, die den Konfigurationspunkt "js-profiling" enthält.

Spezifikationen

Specification
JS Self-Profiling API

Browser-Kompatibilität