11'use strict';
22
33const common = require('../common');
4- const fs = require('fs');
4+ const {
5+ glob,
6+ globSync,
7+ promises: { glob: globAsync },
8+ } = require('fs');
59const path = require('path');
610const assert = require('node:assert');
711
@@ -11,7 +15,7 @@ const configs = {
1115 n: [1e3],
1216 dir: ['lib'],
1317 pattern: ['**/*', '*.js', '**/**.js'],
14- mode: ['async ', 'sync '],
18+ mode: ['sync ', 'promise', 'callback '],
1519 recursive: ['true', 'false'],
1620};
1721
@@ -20,15 +24,33 @@ const bench = common.createBenchmark(main, configs);
2024async function main(config) {
2125 const fullPath = path.resolve(benchmarkDirectory, config.dir);
2226 const { pattern, recursive, mode } = config;
27+ const options = { cwd: fullPath, recursive };
28+ const callback = (resolve, reject) => {
29+ glob(pattern, options, (err, matches) => {
30+ if (err) {
31+ reject(err);
32+ } else {
33+ resolve(matches);
34+ }
35+ });
36+ };
2337
2438 let noDead;
2539 bench.start();
2640
2741 for (let i = 0; i < config.n; i++) {
28- if (mode === 'async') {
29- noDead = await fs.promises.glob(pattern, { cwd: fullPath, recursive });
30- } else {
31- noDead = fs.globSync(pattern, { cwd: fullPath, recursive });
42+ switch (mode) {
43+ case 'sync':
44+ noDead = globSync(pattern, options);
45+ break;
46+ case 'promise':
47+ noDead = await globAsync(pattern, options);
48+ break;
49+ case 'callback':
50+ noDead = await new Promise(callback);
51+ break;
52+ default:
53+ throw new Error(`Unknown mode: ${mode}`);
3254 }
3355 }
3456
0 commit comments