Skip to content

Commit b83ecd1

Browse files
authored
feat: add basic benchmarks for webstreams (#3)
1 parent 8299126 commit b83ecd1

File tree

3 files changed

+117
-6
lines changed

3 files changed

+117
-6
lines changed

package.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
"version": "1.0.0",
44
"description": "",
55
"scripts": {
6-
"text-decoder": "~/Developer/node/out/Release/node ./text-decoder/index.mjs && bun run ./text-decoder/index.mjs && deno run -A ./text-decoder/deno.js",
7-
"text-encoder": "~/Developer/node/out/Release/node ./text-encoder/index.mjs && bun run ./text-encoder/index.mjs && deno run -A ./text-encoder/deno.js",
8-
"string-decoder": "~/Developer/node/out/Release/node ./string-decoder/index.mjs && bun run ./string-decoder/index.mjs && deno run -A ./string-decoder/deno.js",
9-
"url": "~/Developer/node/out/Release/node ./url/index.mjs && bun run ./url/index.mjs && deno run -A ./url/deno.js",
10-
"fetch": "~/Developer/node/out/Release/node ./fetch/index.mjs && bun run ./fetch/index.mjs && deno run -A ./fetch/deno.js",
11-
"buffer": "~/Developer/node/out/Release/node ./buffer/index.mjs && bun run ./buffer/index.mjs && deno run -A ./buffer/deno.js"
6+
"text-decoder": "node ./text-decoder/index.mjs && bun run ./text-decoder/index.mjs && deno run -A ./text-decoder/deno.js",
7+
"text-encoder": "node ./text-encoder/index.mjs && bun run ./text-encoder/index.mjs && deno run -A ./text-encoder/deno.js",
8+
"string-decoder": "node ./string-decoder/index.mjs && bun run ./string-decoder/index.mjs && deno run -A ./string-decoder/deno.js",
9+
"url": "node ./url/index.mjs && bun run ./url/index.mjs && deno run -A ./url/deno.js",
10+
"fetch": "node ./fetch/index.mjs && bun run ./fetch/index.mjs && deno run -A ./fetch/deno.js",
11+
"buffer": "node ./buffer/index.mjs && bun run ./buffer/index.mjs && deno run -A ./buffer/deno.js",
12+
"webstreams": "node ./webstreams/index.mjs && bun run ./webstreams/index.mjs && deno run -A ./webstreams/deno.js"
1213
},
1314
"keywords": [],
1415
"author": "",

webstreams/deno.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { bench, run } from "https://esm.sh/mitata"
2+
3+
const readableStreamForReading = new ReadableStream({
4+
pull: function(controller) {
5+
controller.enqueue(1);
6+
},
7+
});
8+
9+
const reader = readableStreamForReading.getReader();
10+
11+
const writableStreamForWriting = new WritableStream({
12+
write: () => {}
13+
});
14+
15+
const writer = writableStreamForWriting.getWriter();
16+
17+
const transformStream = new TransformStream({
18+
transform: (chunk, controller) => controller.enqueue(chunk)
19+
});
20+
21+
const transformStreamReader = transformStream.readable.getReader();
22+
const transformStreamWriter = transformStream.writable.getWriter();
23+
24+
bench('noop', () => {});
25+
bench('noop', () => {});
26+
27+
bench('new ReadableStream', () => {
28+
new ReadableStream();
29+
});
30+
31+
bench("new WritableStream", () => {
32+
new WritableStream();
33+
});
34+
35+
bench("new TransformStream", () => {
36+
new TransformStream();
37+
});
38+
39+
bench('Read from ReadableStream', async () => {
40+
await reader.read();
41+
});
42+
43+
bench("Write to WritableStream", async () => {
44+
await writer.write("Hello World!");
45+
});
46+
47+
bench("Transform in TransformStream", async () => {
48+
await Promise.all([
49+
transformStreamWriter.write("Hello World!"),
50+
transformStreamReader.read(),
51+
]);
52+
});
53+
54+
await run();

webstreams/index.mjs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { bench, run } from "mitata";
2+
import { ReadableStream, WritableStream, TransformStream } from 'node:stream/web';
3+
4+
const readableStreamForReading = new ReadableStream({
5+
pull: function(controller) {
6+
controller.enqueue(1);
7+
},
8+
});
9+
10+
const reader = readableStreamForReading.getReader();
11+
12+
const writableStreamForWriting = new WritableStream({
13+
write: () => {}
14+
});
15+
16+
const writer = writableStreamForWriting.getWriter();
17+
18+
const transformStream = new TransformStream({
19+
transform: (chunk, controller) => controller.enqueue(chunk)
20+
});
21+
22+
const transformStreamReader = transformStream.readable.getReader();
23+
const transformStreamWriter = transformStream.writable.getWriter();
24+
25+
bench('noop', () => {});
26+
bench('noop', () => {});
27+
28+
bench('new ReadableStream', () => {
29+
new ReadableStream();
30+
});
31+
32+
bench("new WritableStream", () => {
33+
new WritableStream();
34+
});
35+
36+
bench("new TransformStream", () => {
37+
new TransformStream();
38+
});
39+
40+
bench('Read from ReadableStream', async () => {
41+
await reader.read();
42+
});
43+
44+
bench("Write to WritableStream", async () => {
45+
await writer.write("Hello World!");
46+
});
47+
48+
bench("Transform in TransformStream", async () => {
49+
await Promise.all([
50+
transformStreamWriter.write("Hello World!"),
51+
transformStreamReader.read(),
52+
]);
53+
});
54+
55+
await run();
56+

0 commit comments

Comments
 (0)