Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2021-01-29 03:34:27 +0300
committerJames M Snell <jasnell@gmail.com>2021-02-22 19:46:11 +0300
commitf3eb224c83f96cff9231f17b1c0a36b762942f48 (patch)
tree42b62cc1122ef355a47cfe49780a34465887810b /benchmark
parent9f2efaa6f3878509a053a5aa9dab7b1b96d2add3 (diff)
perf_hooks: complete overhaul of the implementation
* Update the user timing implementation to conform to User Timing Level 3. * Reimplement user timing and timerify with pure JavaScript implementations * Simplify the C++ implementation for gc and http2 perf * Runtime deprecate additional perf entry properties in favor of the standard detail argument * Disable the `buffered` option on PerformanceObserver, all entries are queued and dispatched on setImmediate. Only entries with active observers are buffered. * This does remove the user timing and timerify trace events. Because the trace_events are still considered experimental, those can be removed without a deprecation cycle. They are removed to improve performance and reduce complexity. Old: `perf_hooks/usertiming.js n=100000: 92,378.01249733355` New: perf_hooks/usertiming.js n=100000: 270,393.5280638482` PR-URL: https://github.com/nodejs/node/pull/37136 Refs: https://github.com/nodejs/diagnostics/issues/464 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/perf_hooks/usertiming.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/benchmark/perf_hooks/usertiming.js b/benchmark/perf_hooks/usertiming.js
new file mode 100644
index 00000000000..ae797351ad7
--- /dev/null
+++ b/benchmark/perf_hooks/usertiming.js
@@ -0,0 +1,31 @@
+'use strict';
+
+const common = require('../common.js');
+
+const {
+ PerformanceObserver,
+ performance,
+} = require('perf_hooks');
+
+const bench = common.createBenchmark(main, {
+ n: [1e5]
+});
+
+function test() {
+ performance.mark('a');
+ setImmediate(() => {
+ performance.mark('b');
+ performance.measure('a to b', 'a', 'b');
+ });
+}
+
+function main({ n }) {
+ const obs = new PerformanceObserver(() => {
+ bench.end(n);
+ });
+ obs.observe({ entryTypes: ['measure'], buffered: true });
+
+ bench.start();
+ for (let i = 0; i < n; i++)
+ test();
+}