From 003d58de631ead7feebd5f536fc453f515991e89 Mon Sep 17 00:00:00 2001 From: sonsurim Date: Sun, 11 May 2025 22:18:23 +0900 Subject: [PATCH 1/2] benchmark: add more options to cp-sync --- benchmark/fs/bench-cpSync.js | 43 +++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/benchmark/fs/bench-cpSync.js b/benchmark/fs/bench-cpSync.js index 5ee11689e47a8e..5c4ed3285eb5f2 100644 --- a/benchmark/fs/bench-cpSync.js +++ b/benchmark/fs/bench-cpSync.js @@ -4,20 +4,53 @@ const common = require('../common'); const fs = require('fs'); const path = require('path'); const tmpdir = require('../../test/common/tmpdir'); -tmpdir.refresh(); const bench = common.createBenchmark(main, { n: [1, 100, 10_000], + dereference: ['true', 'false'], + force: ['true', 'false'], }); -function main({ n }) { +function prepareTestDirectory() { + const testDir = tmpdir.resolve(`test-cp-${process.pid}`); + fs.mkdirSync(testDir, { recursive: true }); + + fs.writeFileSync(path.join(testDir, 'source.txt'), 'test content'); + + fs.symlinkSync( + path.join(testDir, 'source.txt'), + path.join(testDir, 'link.txt') + ); + + return testDir; +} + +function main({ n, dereference, force }) { tmpdir.refresh(); - const options = { recursive: true }; - const src = path.join(__dirname, '../../test/fixtures/copy'); + + const src = prepareTestDirectory(); const dest = tmpdir.resolve(`${process.pid}/subdir/cp-bench-${process.pid}`); + + const options = { + recursive: true, + dereference: dereference === 'true', + force: force === 'true', + }; + + if (options.force) { + fs.cpSync(src, dest, { recursive: true }); + } + bench.start(); for (let i = 0; i < n; i++) { - fs.cpSync(src, dest, options); + if (options.force) { + fs.cpSync(src, dest, options); + } else { + const uniqueDest = tmpdir.resolve( + `${process.pid}/subdir/cp-bench-${process.pid}-${i}` + ); + fs.cpSync(src, uniqueDest, options); + } } bench.end(n); } From 9949df1d1f7e0e61704e30de0816f36c61ae5951 Mon Sep 17 00:00:00 2001 From: sonsurim Date: Sun, 11 May 2025 22:35:45 +0900 Subject: [PATCH 2/2] benchmark: fix a lint --- benchmark/fs/bench-cpSync.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmark/fs/bench-cpSync.js b/benchmark/fs/bench-cpSync.js index 5c4ed3285eb5f2..fa6350384c69dd 100644 --- a/benchmark/fs/bench-cpSync.js +++ b/benchmark/fs/bench-cpSync.js @@ -19,7 +19,7 @@ function prepareTestDirectory() { fs.symlinkSync( path.join(testDir, 'source.txt'), - path.join(testDir, 'link.txt') + path.join(testDir, 'link.txt'), ); return testDir; @@ -47,7 +47,7 @@ function main({ n, dereference, force }) { fs.cpSync(src, dest, options); } else { const uniqueDest = tmpdir.resolve( - `${process.pid}/subdir/cp-bench-${process.pid}-${i}` + `${process.pid}/subdir/cp-bench-${process.pid}-${i}`, ); fs.cpSync(src, uniqueDest, options); }