Skip to content

Commit 7cb1ce3

Browse files
committed
Add example for tracing require()s
Signed-off-by: Darshan Sen <raisinten@gmail.com>
1 parent 44f4bc7 commit 7cb1ce3

File tree

5 files changed

+1251
-0
lines changed

5 files changed

+1251
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
events.json
2+
node_modules
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Tracing `require()`s
2+
3+
A new `TraceEvents` object is created in:
4+
5+
TODO
6+
7+
Before the process exits, the `TraceEvents` object is destroyed and the trace events are stringified and printed to `events.json` in:
8+
9+
TODO
10+
11+
The code that needs to be profiled can be done using the `peformance.measure()` and `peformance.mark()` APIs from [Node.js](https://nodejs.org/api/perf_hooks.html#performancemarkname-options) and the [Web](https://www.w3.org/TR/user-timing):
12+
13+
```js
14+
peformance.mark("before");
15+
// code that needs to be profiled
16+
performance.measure("after", "before");
17+
```
18+
19+
like it's being done in:
20+
21+
TODO
22+
23+
After running `node .`, the generated `events.json` file can be opened on [https://ui.perfetto.dev](https://ui.perfetto.dev) for visualization:
24+
25+
![](./perfetto.png)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const { TraceEvents, trackRequires } = require("../../..");
2+
const { writeFileSync } = require('fs');
3+
4+
const traceEvents = new TraceEvents();
5+
6+
process.on("beforeExit", () => {
7+
const events = traceEvents.getEvents();
8+
traceEvents.destroy();
9+
writeFileSync("events.json", JSON.stringify(events));
10+
});
11+
12+
trackRequires(true);
13+
14+
// Express Hello world example
15+
// Refs: https://expressjs.com/en/starter/hello-world.html
16+
const express = require('express');
17+
const app = express();
18+
const port = 3000;
19+
20+
let server;
21+
22+
app.get('/', (req, res) => {
23+
res.send('Hello World!');
24+
server.close();
25+
});
26+
27+
server = app.listen(port, () => {
28+
console.log(`Example app listening on port ${port}`);
29+
});

0 commit comments

Comments
 (0)