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, den JavaScript-Ausführungskontext zu sampeln.

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

Im folgenden Beispiel wird eine Profiler erstellt, dann eine Funktion genPrimes() aufgerufen, dann der Profiler gestoppt und die Profildaten abgerufen:

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 stack aufzeichnet (oder sampelt). Das Profil besteht aus der Sammlung dieser Samples. 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 Profil anatomie und format.

Best Practices für das Profiling

Das Sammeln und Verarbeiten von Profildaten verursacht selbst einen Leistungsaufwand, und Entwickler sollten darauf achten, diesen zu verwalten. Praktiken zur Minimierung des Leistungsaufwands beinhalten:

  • Verwenden Sie die Optionen maxBufferSize und sampleInterval, um zu steuern, wie viele Samples genommen werden und wie oft gesampelt wird.
  • Sampeln Sie für kurze Zeitperioden in einer gesampelten Weise: Zum Beispiel für 5 Sekunden von 60 Sekunden verfolgen.
  • Verarbeiten Sie die Samples in einem Web Worker, um die Leistung des Hauptthreads nicht zu beeinträchtigen.
  • Aggregieren Sie die Samples auf dem Client, bevor Sie sie an einen Telemetrie-Endpunkt senden.

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

Schnittstellen

Profiler Experimentell

Die Profiler-Schnittstelle wird verwendet, um Profile zu erstellen.

Sicherheitsanforderungen

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

Spezifikationen

Specification
JS Self-Profiling API

Browser-Kompatibilität