1 | const startTime = Date.now();
|
2 | let last = 0;
|
3 | global.log = function time(message) {
|
4 | let time = Date.now() - startTime;
|
5 | console.log(time, time - last ,message);
|
6 | last = time;
|
7 | };
|
8 | global.perf = function perf(fn) {
|
9 | const start = Date.now();
|
10 | try {
|
11 | fn();
|
12 | } finally {
|
13 | console.log(fn.name, 'took', Date.now() - start);
|
14 | }
|
15 | }
|
16 |
|
17 | require('bluebird').prototype.log = function log(message) {
|
18 | return this.tap(() => global.log(message));
|
19 | }
|
20 |
|
21 | global.measureRequireTimes = () => {
|
22 | 'use strict';
|
23 | const {
|
24 | performance,
|
25 | PerformanceObserver
|
26 | } = require('perf_hooks');
|
27 | const mod = require('module');
|
28 |
|
29 |
|
30 | mod.Module.prototype.require = performance.timerify(mod.Module.prototype.require);
|
31 | require = performance.timerify(require);
|
32 |
|
33 |
|
34 | const obs = new PerformanceObserver((list) => {
|
35 | const entries = list.getEntries();
|
36 | entries.sort((a, b) => b.duration - a.duration).filter(x => x.duration > 1).forEach((entry) => {
|
37 | console.log(`require('${entry[0]}')`, entry.duration);
|
38 | });
|
39 | obs.disconnect();
|
40 | });
|
41 | obs.observe({ entryTypes: ['function'], buffered: true });
|
42 | }
|