mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
54 lines
1.7 KiB
JavaScript
54 lines
1.7 KiB
JavaScript
import { createHash } from "crypto";
|
|
import { readdirSync } from "fs";
|
|
import { readdir } from "fs/promises";
|
|
import { relative, resolve } from "path";
|
|
import { argv } from "process";
|
|
import { fileURLToPath } from "url";
|
|
import { bench, run } from "../runner.mjs";
|
|
|
|
let dir = resolve(argv.length > 2 ? argv[2] : fileURLToPath(new URL("../../node_modules", import.meta.url)));
|
|
if (dir.includes(process.cwd())) {
|
|
dir = relative(process.cwd(), dir);
|
|
}
|
|
|
|
const result = await readdir(dir, { recursive: true });
|
|
const count = result.length;
|
|
const syncCount = readdirSync(dir, { recursive: true }).length;
|
|
|
|
const hash = createHash("sha256").update(result.sort().join("\n")).digest("hex");
|
|
|
|
bench(`await readdir("${dir}", {recursive: true})`, async () => {
|
|
await readdir(dir, { recursive: true });
|
|
});
|
|
|
|
bench(`await readdir("${dir}", {recursive: true}) x 10`, async () => {
|
|
const promises = [
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
readdir(dir, { recursive: true }),
|
|
];
|
|
await Promise.all(promises);
|
|
});
|
|
|
|
bench(`await readdir("${dir}", {recursive: false})`, async () => {
|
|
await readdir(dir, { recursive: false });
|
|
});
|
|
|
|
await run();
|
|
|
|
if (!process?.env?.BENCHMARK_RUNNER) {
|
|
console.log("\n", count, "files/dirs in", dir, "\n", "SHA256:", hash, "\n");
|
|
|
|
if (count !== syncCount) {
|
|
throw new Error(`Mismatched file counts: ${count} async !== ${syncCount} sync`);
|
|
}
|
|
}
|