Profiler

Limited availability

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

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The Profiler interface of the JS Self-Profiling API enables you to create a profile of some part of your web application's execution.

Constructor

Profiler() Experimental

Creates a new Profiler object, and starts collecting samples.

Instance methods

Profiler.stop() Experimental

Stops the profiler, returning a Promise that resolves to the profile.

Events

samplebufferfull

Fired when the profile has recorded enough samples to fill its internal buffer.

Examples

Recording a profile

The following code profiles the doWork() operation, and logs the result.

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

doWork();

const profile = await profiler.stop();
console.log(JSON.stringify(profile));

Profiling page load

The following code profiles the time between the script first running and the window's load event firing.

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

window.addEventListener("load", async () => {
  const profile = await profiler.stop();
  console.log(JSON.stringify(profile));
});

Specifications

Specification
JS Self-Profiling API
# the-profiler-interface

Browser compatibility