mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
114 lines
3.0 KiB
JavaScript
114 lines
3.0 KiB
JavaScript
import fg from "fast-glob";
|
|
import { fdir } from "fdir";
|
|
import { bench, group, run } from "../runner.mjs";
|
|
|
|
const normalPattern = "*.ts";
|
|
const recursivePattern = "**/*.ts";
|
|
const nodeModulesPattern = "**/node_modules/**/*.js";
|
|
|
|
const benchFdir = false;
|
|
const cwd = undefined;
|
|
|
|
const bunOpts = {
|
|
cwd,
|
|
followSymlinks: false,
|
|
absolute: true,
|
|
};
|
|
|
|
const fgOpts = {
|
|
cwd,
|
|
followSymbolicLinks: false,
|
|
onlyFiles: false,
|
|
absolute: true,
|
|
};
|
|
|
|
const Glob = "Bun" in globalThis ? globalThis.Bun.Glob : undefined;
|
|
|
|
group({ name: `async pattern="${normalPattern}"`, summary: true }, () => {
|
|
bench("fast-glob", async () => {
|
|
const entries = await fg.glob([normalPattern], fgOpts);
|
|
});
|
|
|
|
if (Glob)
|
|
bench("Bun.Glob", async () => {
|
|
const entries = await Array.fromAsync(new Glob(normalPattern).scan(bunOpts));
|
|
});
|
|
|
|
if (benchFdir)
|
|
bench("fdir", async () => {
|
|
const entries = await new fdir().withFullPaths().glob(normalPattern).crawl(process.cwd()).withPromise();
|
|
});
|
|
});
|
|
|
|
group({ name: `async-recursive pattern="${recursivePattern}"`, summary: true }, () => {
|
|
bench("fast-glob", async () => {
|
|
const entries = await fg.glob([recursivePattern], fgOpts);
|
|
});
|
|
|
|
if (Glob)
|
|
bench("Bun.Glob", async () => {
|
|
const entries = await Array.fromAsync(new Glob(recursivePattern).scan(bunOpts));
|
|
});
|
|
|
|
if (benchFdir)
|
|
bench("fdir", async () => {
|
|
const entries = await new fdir().withFullPaths().glob(recursivePattern).crawl(process.cwd()).withPromise();
|
|
});
|
|
});
|
|
|
|
group({ name: `sync pattern="${normalPattern}"`, summary: true }, () => {
|
|
bench("fast-glob", () => {
|
|
const entries = fg.globSync([normalPattern], fgOpts);
|
|
});
|
|
|
|
if (Glob)
|
|
bench("Bun.Glob", () => {
|
|
const entries = [...new Glob(normalPattern).scanSync(bunOpts)];
|
|
});
|
|
|
|
if (benchFdir)
|
|
bench("fdir", async () => {
|
|
const entries = new fdir().withFullPaths().glob(normalPattern).crawl(process.cwd()).sync();
|
|
});
|
|
});
|
|
|
|
group({ name: `sync-recursive pattern="${recursivePattern}"`, summary: true }, () => {
|
|
bench("fast-glob", () => {
|
|
const entries = fg.globSync([recursivePattern], fgOpts);
|
|
});
|
|
|
|
if (Glob)
|
|
bench("Bun.Glob", () => {
|
|
const entries = [...new Glob(recursivePattern).scanSync(bunOpts)];
|
|
});
|
|
|
|
if (benchFdir)
|
|
bench("fdir", async () => {
|
|
const entries = new fdir().withFullPaths().glob(recursivePattern).crawl(process.cwd()).sync();
|
|
});
|
|
});
|
|
|
|
group({ name: `node_modules pattern="${nodeModulesPattern}"`, summary: true }, () => {
|
|
bench("fast-glob", async () => {
|
|
const entries = await fg.glob([nodeModulesPattern], fgOpts);
|
|
});
|
|
|
|
if (Glob)
|
|
bench("Bun.Glob", async () => {
|
|
const entries = await Array.fromAsync(new Glob(nodeModulesPattern).scan(bunOpts));
|
|
});
|
|
|
|
if (benchFdir)
|
|
bench("fdir", async () => {
|
|
const entries = await new fdir().withFullPaths().glob(nodeModulesPattern).crawl(process.cwd()).withPromise();
|
|
});
|
|
});
|
|
|
|
await run({
|
|
avg: true,
|
|
colors: false,
|
|
min_max: true,
|
|
collect: true,
|
|
percentiles: true,
|
|
});
|