Skip to content

Commit d94b4b1

Browse files
committed
Added a comparison for Response API
1 parent 2f9ab02 commit d94b4b1

3 files changed

Lines changed: 34 additions & 1 deletion

File tree

.github/workflows/demonstration.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@ jobs:
2020
run: bun run demo:decoding
2121
- name: Memory usage with intermediate string
2222
run: bun run demo:gc-strings
23+
- name: Compare await new Response(buffer).json() and JSON.parse(buffer.toString())
24+
run: bun run demo:against-response

demo/against-ResponseAPI.mjs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
var payload1 = '{"key":"value", "key2": 123123}';
2+
console.info("Payload to be tested: ", payload1)
3+
var buffer1 = Buffer.from(payload1)
4+
console.time("JSON.parse")
5+
for (var i = 0; i < 1_000_000; i++) {
6+
JSON.parse(buffer1.toString());
7+
}
8+
console.timeEnd("JSON.parse")
9+
console.time("await Response.json()")
10+
for (var i = 0; i < 1_000_000; i++) {
11+
await new Response(buffer1).json()
12+
}
13+
console.timeEnd("await Response.json()")
14+
15+
16+
var payload2 = JSON.stringify(
17+
new Array(100).fill({"key":"value", "key2": 123123})
18+
);
19+
console.info("Payload - an array of " + payload1, "; Length in js characters:", payload2.length)
20+
var buffer2 = Buffer.from(payload2)
21+
console.time("JSON.parse")
22+
for (var i = 0; i < 1_000_00; i++) {
23+
JSON.parse(buffer2.toString());
24+
}
25+
console.timeEnd("JSON.parse")
26+
console.time("await Response.json()")
27+
for (var i = 0; i < 1_000_00; i++) {
28+
await new Response(buffer2).json()
29+
}
30+
console.timeEnd("await Response.json()")

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"demo:decoding": "node demo/decoding.mjs",
1111
"demo:json": "node demo/json-parse.mjs",
1212
"demo:gc-strings": "node --expose-gc demo/gc-strings.mjs && node --max-old-space-size=25 --expose-gc demo/gc-strings.mjs",
13-
"demo:all": "bun run demo:errors && bun run demo:decoding && bun run demo:json"
13+
"demo:against-response": "node demo/against-ResponseAPI.mjs && deno demo/against-ResponseAPI.mjs && bun demo/against-ResponseAPI.mjs",
14+
"demo:all": "bun run demo:errors && bun run demo:decoding && bun run demo:json && bun run demo:against-response"
1415
},
1516
"homepage": "https://github.com/Guthib-of-Dan/proposal-json-parse-binary#readme",
1617
"repository": {

0 commit comments

Comments
 (0)