`node:fs` error path performance improvements
Closes https://github.com/nodejs/node/pull/49863 Closes https://github.com/nodejs/node/pull/49750 Closes https://github.com/nodejs/node/pull/49748
Local benchmarks:
-
readlinkSync
,linkSync
,symlinkSync
fs/bench-linkSync.js n=1000 type='invalid' *** 33.31 % ±1.38% ±1.84% ±2.40%
fs/bench-linkSync.js n=1000 type='valid' -1.06 % ±3.29% ±4.40% ±5.77%
fs/bench-readlinkSync.js n=1000 type='invalid' *** 25.55 % ±0.96% ±1.28% ±1.66%
fs/bench-readlinkSync.js n=1000 type='valid' 4.01 % ±6.24% ±8.32% ±10.87%
fs/bench-symlinkSync.js n=1000 type='invalid' *** 31.08 % ±1.08% ±1.45% ±1.90%
fs/bench-symlinkSync.js n=1000 type='valid' 1.37 % ±3.34% ±4.45% ±5.79%
renameSync
fs/bench-renameSync.js n=2000 type='invalid' *** 44.88 % ±4.54% ±6.06% ±7.93%
fs/bench-renameSync.js n=2000 type='valid' -1.36 % ±4.57% ±6.08% ±7.92%
-
chownSync
&lchownSync
fs/bench-chownSync.js n=10000 method='chownSync' type='existing' ** 3.08 % ±1.93% ±2.58% ±3.39%
fs/bench-chownSync.js n=10000 method='chownSync' type='non-existing' *** 90.16 % ±1.57% ±2.09% ±2.72%
fs/bench-chownSync.js n=10000 method='lchownSync' type='existing' -0.03 % ±1.99% ±2.65% ±3.45%
fs/bench-chownSync.js n=10000 method='lchownSync' type='non-existing' *** 87.50 % ±1.75% ±2.33% ±3.06%
mkdtempSync
fs/bench-mkdtempSync.js n=1000 type='invalid' *** 54.66 % ±1.72% ±2.30% ±3.01%
fs/bench-mkdtempSync.js n=1000 type='valid' -1.20 % ±3.58% ±4.77% ±6.20%
Ref: https://github.com/nodejs/performance/issues/106
cc @nodejs/performance