I recently landed a new scriptable API
<https://bugzilla.mozilla.org/show_bug.cgi?id=1608556> to add profiler
markers: ChromeUtils.addProfilerMarker.
This makes it possible for chrome privileged JS code to insert profiler
markers that (optionally) have a duration and an associated text.
Examples:
- Adding a marker without duration:
ChromeUtils.addProfilerMarker("markerName");
- Adding a marker showing the time it took to do something:
let startTime = performance.now();
/* do stuff */
ChromeUtils.addProfilerMarker("markerName", startTime);
The performance object is available in windows and workers. In JS
modules, use Cu.now() instead of performance.now().
- Adding a marker with a duration and an associated extra string:
ChromeUtils.addProfilerMarker("markerName", startTime, "marker text");
Hopefully, this should make it easier to show clearly in the profiler what
our JS code is doing. The first use I made of this was to show the OS.File
operations that are done asynchronously (example profile:
https://perfht.ml/2RhAKXF).
Scriptable marker APIs that already existed:
- Adding a marker from XPCOM-enabled contexts:
if (Services.profiler) {
Services.profiler.addMarker("markerName");
}
The null check was required to avoid exceptions on tier3 platforms that
don't implement the profiler service.
We will probably want to deprecate this API and migrate all existing
callers.
- Adding a 'UserTiming' marker with a duration in a window or worker:
performance.mark("markName");
/* do stuff */
performance.measure("marker text", "markName");
This will add a marker named UserTiming with the "marker text"
associated text, and the duration between the performance.mark and the
performance.measure calls. However, the performance.measure
implementation is slow
<https://bugzilla.mozilla.org/show_bug.cgi?id=1373086> enough that it
adds significant overhead if called frequently.
This API will remain available, but should be avoided for chrome
privileged code.
--
Florian Quèze
_______________________________________________
dev-platform mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-platform