mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
import { createReadStream, writeFileSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { sep } from "node:path";
|
|
import { bench, run } from "../runner.mjs";
|
|
|
|
if (!Promise.withResolvers) {
|
|
Promise.withResolvers = function () {
|
|
let resolve, reject;
|
|
const promise = new Promise((res, rej) => {
|
|
resolve = res;
|
|
reject = rej;
|
|
});
|
|
return { promise, resolve, reject };
|
|
};
|
|
}
|
|
|
|
const ALLOW_BUN = typeof Bun !== "undefined";
|
|
const ALLOW_NODE = true;
|
|
|
|
const dir = tmpdir() + sep;
|
|
|
|
var short = (function () {
|
|
const text = "Hello World!";
|
|
const path = dir + "bun-bench-short.text";
|
|
writeFileSync(path, text, "utf8");
|
|
return { path, length: text.length };
|
|
})();
|
|
var shortUTF16 = (function () {
|
|
const text = "Hello World 💕💕💕";
|
|
const path = dir + "bun-bench-shortUTF16.text";
|
|
writeFileSync(path, text, "utf8");
|
|
return { path, length: text.length };
|
|
})();
|
|
var long = (function () {
|
|
const text = "Hello World!".repeat(1024);
|
|
const path = dir + "bun-bench-long.text";
|
|
writeFileSync(path, text, "utf8");
|
|
return { path, length: text.length };
|
|
})();
|
|
var longUTF16 = (function () {
|
|
const text = "Hello World 💕💕💕".repeat(15 * 70192);
|
|
const path = dir + "bun-bench-longUTF16.text";
|
|
writeFileSync(path, text, "utf8");
|
|
return { path, length: text.length };
|
|
})();
|
|
|
|
async function bun(path) {
|
|
for await (const chunk of Bun.file(path).stream()) {
|
|
chunk;
|
|
}
|
|
}
|
|
|
|
async function node(path) {
|
|
const { promise, resolve } = Promise.withResolvers();
|
|
const stream = createReadStream(path);
|
|
stream.on("data", chunk => {});
|
|
stream.on("end", () => resolve());
|
|
await promise;
|
|
}
|
|
|
|
ALLOW_BUN && bench("short - bun", () => bun(short.path));
|
|
ALLOW_NODE && bench("short - node", () => node(short.path));
|
|
|
|
ALLOW_BUN && bench("shortUTF16 - bun", () => bun(shortUTF16.path));
|
|
ALLOW_NODE && bench("shortUTF16 - node", () => node(shortUTF16.path));
|
|
|
|
ALLOW_BUN && bench("long - bun", () => bun(long.path));
|
|
ALLOW_NODE && bench("long - node", () => node(long.path));
|
|
|
|
ALLOW_BUN && bench("longUTF16 - bun", () => bun(longUTF16.path));
|
|
ALLOW_NODE && bench("longUTF16 - node", () => node(longUTF16.path));
|
|
|
|
await run();
|