Skip to content

Commit

Permalink
chore: add fs.readdir to benchmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
thecodrr committed Nov 26, 2023
1 parent 1800a8a commit d0520a6
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 55 deletions.
67 changes: 35 additions & 32 deletions BENCHMARKS.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,53 @@
# Benchmarks

**System information:**

```
Package version: 6.0.0
Package version: 6.1.1
CPU: Intel Core™ i7-10610U 1.8GHz
Cores: 8 (4 Physical)
RAM: 24GB
Disk: Samsung SAMSUNG MZVLW256HEHP-000L7 238GB SSD (NVMe)
OS: Microsoft Windows 11 Pro (Windows)
Kernel: 10.0.22621 x64
Node: v18.14.0
V8: 10.2.154.23-node.22
Node: v20.10.0
V8: 11.3.244.8-node.25
```

## Asynchronous

> 9690 files & 1243 directories
> 4865 files & 745 directories
| Package | ops/s | Error margin | % slower |
|---------------------|-------|----------|-----------------|
| fdir (v6.1.1) | 76.1 | 1.38 | 2.81 |
| fdir (v3.4.2) | 78.3 | 1.04 | 0 |
| fdir (v4.1.0) | 77.8 | 1.13 | 0.64 |
| fdir (v5.0.0) | 78.1 | 0.98 | 0.26 |
| recursive-fs | 69.3 | 1.04 | 11.49 |
| recur-readdir | 1.7 | 1.5 | 97.83 |
| recursive-files | 15.3 | 4.22 | 80.46 |
| recursive-readdir | 14.9 | 2.72 | 80.97 |
| getAllFiles | 68 | 0.96 | 13.15 |
| node:fs.readdir | 13.1 | 1.43 | 83.27 |

| Package | ops/s | Error margin | % slower |
| ----------------- | ----- | ------------ | -------- |
| fdir (v6.0.0) | 46.9 | 2.87 | 1.47 |
| fdir (v3.4.2) | 47.6 | 2.13 | 0 |
| fdir (v4.1.0) | 41.2 | 6.99 | 13.45 |
| fdir (v5.0.0) | 44.6 | 3.16 | 6.3 |
| recursive-fs | 44.7 | 0.87 | 6.09 |
| recur-readdir | 0.7 | 12.12 | 98.53 |
| recursive-files | 6.3 | 5.07 | 86.76 |
| recursive-readdir | 7.2 | 7.46 | 84.87 |
| getAllFiles | 43.9 | 1.73 | 7.77 |

## Synchronous

> 9690 files & 1243 directories
| Package | ops/s | Error margin | % slower |
| -------------------- | ------ | ------------ | -------- |
| fdir (v6.0.0) | 18.342 | 2.41 | 8.52 |
| fdir (v1.2.0) | 19.616 | 2.77 | 2.17 |
| fdir (v2.1.1) | 20.051 | 0.62 | 0 |
| fdir (v3.4.2) | 19.719 | 0.85 | 1.66 |
| fdir (v4.1.0) | 18.869 | 0.67 | 5.89 |
| fdir (v5.0.0) | 19.015 | 0.77 | 5.17 |
| get-all-files | 16.882 | 0.66 | 15.8 |
| all-files-in-tree | 3.093 | 1.37 | 84.57 |
| fs-readdir-recursive | 1.409 | 0.6 | 92.97 |
| klaw-sync | 3.092 | 1.83 | 84.58 |
| recur-readdir | 1.369 | 1.97 | 93.17 |
| walk-sync | 1.63 | 1.34 | 91.87 |
> 4865 files & 745 directories
| Package | ops/s | Error margin | % slower |
|------------------------|-------|----------|-----------------|
| fdir (v6.1.1) | 32.9 | 1.24 | 0 |
| fdir (v1.2.0) | 32.1 | 0.91 | 2.43 |
| fdir (v2.1.1) | 31.8 | 0.87 | 3.34 |
| fdir (v3.4.2) | 31.5 | 1.28 | 4.26 |
| fdir (v4.1.0) | 29.7 | 0.79 | 9.73 |
| fdir (v5.0.0) | 29.9 | 0.61 | 9.12 |
| get-all-files | 28.9 | 0.57 | 12.16 |
| all-files-in-tree | 5.7 | 0.89 | 82.67 |
| fs-readdir-recursive | 2.7 | 0.88 | 91.79 |
| klaw-sync | 5.8 | 0.93 | 82.37 |
| recur-readdir | 3 | 1.58 | 90.88 |
| walk-sync | 2.9 | 0.91 | 91.19 |
| node:fs.readdirSync | 29.1 | 0.72 | 11.55 |

54 changes: 31 additions & 23 deletions benchmarks/benchmark.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,50 +15,55 @@ import recursiveFs from "recursive-fs";
import b from "benny";
import { getAllFilesSync, getAllFiles } from "get-all-files";
import packageJson from "../package.json";
import { readFileSync, writeFileSync } from "fs";
import { readFileSync, readdirSync, writeFileSync } from "fs";
import CSV2MD from "csv-to-markdown-table";
import { getSystemInfo } from "./export";
import { readdir } from "fs/promises";

async function benchmark() {
const counts = new fdir().onlyCounts().crawl("node_modules").sync();
const DIRECTORY = "node_modules";
const counts = new fdir().onlyCounts().crawl(DIRECTORY).sync();

await b.suite(
`Synchronous (${counts.files} files, ${counts.directories} folders)`,
b.add(`fdir (v${packageJson.version})`, () => {
new fdir().crawl("node_modules").sync();
new fdir().crawl(DIRECTORY).sync();
}),
b.add("fdir (v1.2.0)", () => {
fdir1.sync("node_modules");
fdir1.sync(DIRECTORY);
}),
b.add("fdir (v2.1.1)", () => {
fdir2.sync("node_modules");
fdir2.sync(DIRECTORY);
}),
b.add("fdir (v3.4.2)", () => {
new fdir3().crawl("node_modules").sync("node_modules");
new fdir3().crawl(DIRECTORY).sync(DIRECTORY);
}),
b.add(`fdir (v4.1.0)`, () => {
new fdir4().crawl("node_modules").sync();
new fdir4().crawl(DIRECTORY).sync();
}),
b.add(`fdir (v5.0.0)`, () => {
new fdir5().crawl("node_modules").sync();
new fdir5().crawl(DIRECTORY).sync();
}),
b.add(`get-all-files`, () => {
getAllFilesSync("node_modules").toArray();
getAllFilesSync(DIRECTORY).toArray();
}),
b.add("all-files-in-tree", () => {
allFilesInTree.sync("node_modules");
allFilesInTree.sync(DIRECTORY);
}),
b.add("fs-readdir-recursive", () => {
fsReadDirRecursive("node_modules");
fsReadDirRecursive(DIRECTORY);
}),
b.add("klaw-sync", () => {
klawSync("node_modules", {});
klawSync(DIRECTORY, {});
}),
b.add("recur-readdir", () => {
recurReadDir.crawlSync("node_modules");
recurReadDir.crawlSync(DIRECTORY);
}),
b.add("walk-sync", () => {
walkSync("node_modules");
walkSync(DIRECTORY);
}),
b.add("node:fs.readdirSync", () => {
readdirSync(DIRECTORY, { withFileTypes: true, recursive: true });
}),
b.cycle(),
b.complete(),
Expand All @@ -68,31 +73,31 @@ async function benchmark() {
await b.suite(
`Asynchronous (${counts.files} files, ${counts.directories} folders)`,
b.add(`fdir (v${packageJson.version})`, async () => {
await new fdir().crawl("node_modules").withPromise();
await new fdir().crawl(DIRECTORY).withPromise();
}),
b.add(`fdir (v3.4.2)`, async () => {
await new fdir3().crawl("node_modules").withPromise();
await new fdir3().crawl(DIRECTORY).withPromise();
}),
b.add(`fdir (v4.1.0)`, async () => {
await new fdir4().crawl("node_modules").withPromise();
await new fdir4().crawl(DIRECTORY).withPromise();
}),
b.add(`fdir (v5.0.0)`, async () => {
await new fdir5().crawl("node_modules").withPromise();
await new fdir5().crawl(DIRECTORY).withPromise();
}),
b.add("recursive-fs", async () => {
await new Promise((resolve) => {
recursiveFs.readdirr("node_modules", () => {
recursiveFs.readdirr(DIRECTORY, () => {
resolve(undefined);
});
});
}),
b.add("recur-readdir", async () => {
await recurReadDir.crawl("node_modules");
await recurReadDir.crawl(DIRECTORY);
}),
b.add("recursive-files", async () => {
let timeout;
await new Promise((resolve) => {
recursiveFiles("node_modules", { hidden: true }, () => {
recursiveFiles(DIRECTORY, { hidden: true }, () => {
clearTimeout(timeout);
timeout = setTimeout(() => {
resolve(undefined);
Expand All @@ -101,10 +106,13 @@ async function benchmark() {
});
}),
b.add("recursive-readdir", async () => {
await recursiveReadDir("node_modules");
await recursiveReadDir(DIRECTORY);
}),
b.add("getAllFiles", async () => {
await getAllFiles("node_modules").toArray();
await getAllFiles(DIRECTORY).toArray();
}),
b.add("node:fs.readdir", async () => {
await readdir(DIRECTORY, { withFileTypes: true, recursive: true });
}),
b.cycle(),
b.complete(),
Expand Down

0 comments on commit d0520a6

Please sign in to comment.