diff options
author | legendecas <legendecas@gmail.com> | 2021-06-24 18:33:09 +0300 |
---|---|---|
committer | legendecas <legendecas@gmail.com> | 2021-07-25 18:43:31 +0300 |
commit | 062f8e37307336d7f0a3e12f4ca252fe4b44a49d (patch) | |
tree | 7f629812ab0eaccb2749627c73e6f338bacac5bd /benchmark | |
parent | 5c4e673a9694ca62537834c0f67b5a37e4b3a140 (diff) |
perf_hooks: web performance timeline compliance
All API introduced in this PR are compliant with web
[performance-timeline](https://w3c.github.io/performance-timeline)
spec. "performance-timeline" is listed as supported web spec in the doc
https://nodejs.org/docs/latest/api/perf_hooks.html#perf_hooks_performance_measurement_apis.
Changes summary:
1. Add new supported wpt test subsets: user-timing and
performance-timeline.
2. Add support for `Performance.getEntries`,
`Performance.getEntriesByName` and `Performance.getEntriesByType`
to synchronously fetch buffered performance entries. This means
the user should invoke `Performance.clearMarks` and
`Performance.clearMeasures` to clear buffered entries to prevent from
those entries been kept alive forever.
3. Add support (again after https://github.com/nodejs/node/pull/37136)
for `buffered` flags for `PerformanceObserver`.
3. Fixes `PerformanceMark` and `PerformanceMeasure` wpt compliance
issues.
4. Only user-created performance entries will be buffered globally. This
behavior should be compliant with
https://w3c.github.io/timing-entrytypes-registry/#registry.
With the new ability to fetch user-created performance entries
synchronously, the issues raised in
https://github.com/nodejs/diagnostics/issues/464#issuecomment-861920116
could also be fixed.
PR-URL: https://github.com/nodejs/node/pull/39297
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/perf_hooks/usertiming.js | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/benchmark/perf_hooks/usertiming.js b/benchmark/perf_hooks/usertiming.js index ae797351ad7..24a53a11678 100644 --- a/benchmark/perf_hooks/usertiming.js +++ b/benchmark/perf_hooks/usertiming.js @@ -8,24 +8,27 @@ const { } = require('perf_hooks'); const bench = common.createBenchmark(main, { - n: [1e5] + n: [1e5], + observe: ['all', 'measure'], }); function test() { performance.mark('a'); - setImmediate(() => { - performance.mark('b'); - performance.measure('a to b', 'a', 'b'); - }); + performance.mark('b'); + performance.measure('a to b', 'a', 'b'); } -function main({ n }) { +function main({ n, observe }) { + const entryTypes = observe === 'all' ? + [ 'mark', 'measure' ] : + [ observe ]; const obs = new PerformanceObserver(() => { bench.end(n); }); - obs.observe({ entryTypes: ['measure'], buffered: true }); + obs.observe({ entryTypes, buffered: true }); bench.start(); - for (let i = 0; i < n; i++) + performance.mark('start'); + for (let i = 0; i < 1e5; i++) test(); } |