Skip to content

Instantly share code, notes, and snippets.

@joaocgreis
Created February 28, 2024 17:04
Show Gist options
  • Save joaocgreis/a7d183145b3217099110f0d0445cb450 to your computer and use it in GitHub Desktop.
Save joaocgreis/a7d183145b3217099110f0d0445cb450 to your computer and use it in GitHub Desktop.
Performance benchmarks using GetFileInformationByName
confidence improvement accuracy (*) (**) (***)
fs\\bench-accessSync.js n=100000 type='existing' * 1.23 % ±1.02% ±1.34% ±1.73%
fs\\bench-accessSync.js n=100000 type='non-existing' * 1.48 % ±1.37% ±1.81% ±2.33%
fs\\bench-accessSync.js n=100000 type='non-flat-existing' 0.23 % ±1.37% ±1.80% ±2.32%
fs\\bench-chmodSync.js n=1000 type='existing' *** 7.16 % ±2.78% ±3.67% ±4.72%
fs\\bench-chmodSync.js n=1000 type='non-existing' * 3.10 % ±2.42% ±3.19% ±4.11%
fs\\bench-existsSync.js n=1000000 type='existing' *** 68.95 % ±1.36% ±1.80% ±2.33%
fs\\bench-existsSync.js n=1000000 type='non-existing' 0.75 % ±0.97% ±1.28% ±1.65%
fs\\bench-existsSync.js n=1000000 type='non-flat-existing' *** 70.03 % ±1.18% ±1.57% ±2.02%
fs\\bench-fchmodSync.js n=1000 type='existing' *** 25.30 % ±2.22% ±2.93% ±3.77%
fs\\bench-fchmodSync.js n=1000 type='non-existing' *** 8.94 % ±1.97% ±2.60% ±3.34%
fs\\bench-fsyncSync.js n=10000 type='existing' -1.56 % ±2.52% ±3.33% ±4.29%
fs\\bench-fsyncSync.js n=10000 type='non-existing' *** -2.76 % ±1.29% ±1.71% ±2.20%
fs\\bench-ftruncateSync.js n=10000 type='invalid' *** -3.84 % ±2.00% ±2.64% ±3.39%
fs\\bench-ftruncateSync.js n=10000 type='valid' *** -9.86 % ±2.39% ±3.16% ±4.09%
fs\\bench-linkSync.js n=1000 type='invalid' *** 4.13 % ±1.88% ±2.49% ±3.20%
fs\\bench-linkSync.js n=1000 type='valid' * -1.08 % ±0.96% ±1.27% ±1.64%
fs\\bench-mkdirp.js n=10000 -0.28 % ±0.53% ±0.69% ±0.89%
fs\\bench-mkdirSync.js n=1000 recursive='false' type='existing' -0.20 % ±1.82% ±2.40% ±3.09%
fs\\bench-mkdirSync.js n=1000 recursive='false' type='non-existing' -1.61 % ±1.82% ±2.40% ±3.09%
fs\\bench-mkdirSync.js n=1000 recursive='true' type='existing' *** 79.30 % ±2.89% ±3.82% ±4.93%
fs\\bench-mkdirSync.js n=1000 recursive='true' type='non-existing' ** 3.04 % ±1.79% ±2.36% ±3.04%
fs\\bench-mkdtempSync.js n=10000 type='invalid' *** 2.68 % ±1.33% ±1.75% ±2.25%
fs\\bench-mkdtempSync.js n=10000 type='valid-buffer' * -1.06 % ±0.97% ±1.28% ±1.65%
fs\\bench-mkdtempSync.js n=10000 type='valid-string' *** -3.65 % ±1.10% ±1.45% ±1.86%
fs\\bench-opendir.js bufferSize=1024 mode='async' dir='lib' n=100 0.71 % ±1.95% ±2.58% ±3.32%
fs\\bench-opendir.js bufferSize=1024 mode='async' dir='test/parallel' n=100 ** 4.08 % ±2.48% ±3.28% ±4.22%
fs\\bench-opendir.js bufferSize=1024 mode='callback' dir='lib' n=100 0.26 % ±1.81% ±2.39% ±3.08%
fs\\bench-opendir.js bufferSize=1024 mode='callback' dir='test/parallel' n=100 1.00 % ±3.84% ±5.07% ±6.53%
fs\\bench-opendir.js bufferSize=1024 mode='sync' dir='lib' n=100 *** 6.03 % ±3.42% ±4.52% ±5.81%
fs\\bench-opendir.js bufferSize=1024 mode='sync' dir='test/parallel' n=100 2.26 % ±4.19% ±5.53% ±7.11%
fs\\bench-opendir.js bufferSize=32 mode='async' dir='lib' n=100 1.13 % ±2.14% ±2.82% ±3.63%
fs\\bench-opendir.js bufferSize=32 mode='async' dir='test/parallel' n=100 ** 4.35 % ±2.57% ±3.40% ±4.38%
fs\\bench-opendir.js bufferSize=32 mode='callback' dir='lib' n=100 0.38 % ±1.57% ±2.07% ±2.66%
fs\\bench-opendir.js bufferSize=32 mode='callback' dir='test/parallel' n=100 1.07 % ±2.76% ±3.65% ±4.69%
fs\\bench-opendir.js bufferSize=32 mode='sync' dir='lib' n=100 *** 7.31 % ±3.95% ±5.22% ±6.72%
fs\\bench-opendir.js bufferSize=32 mode='sync' dir='test/parallel' n=100 2.06 % ±4.60% ±6.07% ±7.81%
fs\\bench-opendir.js bufferSize=4 mode='async' dir='lib' n=100 1.82 % ±1.87% ±2.47% ±3.17%
fs\\bench-opendir.js bufferSize=4 mode='async' dir='test/parallel' n=100 ** 1.37 % ±0.90% ±1.19% ±1.53%
fs\\bench-opendir.js bufferSize=4 mode='callback' dir='lib' n=100 ** 2.65 % ±1.75% ±2.31% ±2.98%
fs\\bench-opendir.js bufferSize=4 mode='callback' dir='test/parallel' n=100 1.02 % ±1.20% ±1.59% ±2.05%
fs\\bench-opendir.js bufferSize=4 mode='sync' dir='lib' n=100 3.13 % ±3.42% ±4.52% ±5.82%
fs\\bench-opendir.js bufferSize=4 mode='sync' dir='test/parallel' n=100 1.27 % ±4.59% ±6.06% ±7.80%
fs\\bench-opendirSync.js n=1000 type='existing' -0.08 % ±1.30% ±1.72% ±2.22%
fs\\bench-opendirSync.js n=1000 type='non-existing' 1.26 % ±2.96% ±3.92% ±5.05%
fs\\bench-openSync.js n=100000 type='existing' -0.12 % ±1.57% ±2.07% ±2.66%
fs\\bench-openSync.js n=100000 type='non-existing' 0.13 % ±1.65% ±2.17% ±2.80%
fs\\bench-readdir.js withFileTypes='false' dir='lib' n=10 -2.12 % ±2.48% ±3.27% ±4.21%
fs\\bench-readdir.js withFileTypes='false' dir='test/parallel' n=10 -0.48 % ±2.01% ±2.65% ±3.42%
fs\\bench-readdir.js withFileTypes='true' dir='lib' n=10 -2.34 % ±2.45% ±3.23% ±4.15%
fs\\bench-readdir.js withFileTypes='true' dir='test/parallel' n=10 -1.85 % ±2.75% ±3.64% ±4.69%
fs\\bench-readdirSync.js withFileTypes='false' dir='lib' n=10 -0.60 % ±2.62% ±3.46% ±4.45%
fs\\bench-readdirSync.js withFileTypes='false' dir='test/parallel' n=10 0.73 % ±2.31% ±3.05% ±3.92%
fs\\bench-readdirSync.js withFileTypes='true' dir='lib' n=10 * -2.49 % ±1.95% ±2.58% ±3.32%
fs\\bench-readdirSync.js withFileTypes='true' dir='test/parallel' n=10 0.48 % ±2.71% ±3.58% ±4.61%
fs\\bench-realpath.js pathType='relative' n=10000 *** 32.29 % ±1.16% ±1.53% ±1.97%
fs\\bench-realpath.js pathType='resolved' n=10000 *** 42.67 % ±1.08% ±1.43% ±1.84%
fs\\bench-realpathSync.js pathType='relative' n=10000 *** 230.02 % ±5.03% ±6.67% ±8.63%
fs\\bench-realpathSync.js pathType='resolved' n=10000 *** 232.90 % ±3.07% ±4.07% ±5.25%
fs\\bench-renameSync.js n=2000 type='invalid' *** 5.32 % ±1.97% ±2.60% ±3.35%
fs\\bench-renameSync.js n=2000 type='valid' *** -2.67 % ±1.46% ±1.93% ±2.48%
fs\\bench-rmdirSync.js n=10000 type='existing' *** 4.56 % ±1.98% ±2.61% ±3.36%
fs\\bench-rmdirSync.js n=10000 type='non-existing' * 1.48 % ±1.15% ±1.52% ±1.95%
fs\\bench-stat-promise.js statType='fstat' n=200000 0.45 % ±1.07% ±1.41% ±1.81%
fs\\bench-stat-promise.js statType='lstat' n=200000 *** 44.17 % ±1.34% ±1.77% ±2.28%
fs\\bench-stat-promise.js statType='stat' n=200000 *** 42.41 % ±1.15% ±1.52% ±1.95%
fs\\bench-stat.js statType='fstat' n=200000 ** 0.93 % ±0.68% ±0.91% ±1.17%
fs\\bench-stat.js statType='lstat' n=200000 *** 47.94 % ±0.90% ±1.18% ±1.53%
fs\\bench-stat.js statType='stat' n=200000 *** 46.89 % ±0.99% ±1.31% ±1.70%
fs\\bench-statSync-failure.js throwType='noThrow' statSyncType='lstatSync' n=10000 *** 25.87 % ±1.76% ±2.32% ±2.99%
fs\\bench-statSync-failure.js throwType='noThrow' statSyncType='statSync' n=10000 *** 26.15 % ±1.80% ±2.38% ±3.06%
fs\\bench-statSync-failure.js throwType='throw' statSyncType='fstatSync' n=10000 * -2.26 % ±2.09% ±2.77% ±3.56%
fs\\bench-statSync-failure.js throwType='throw' statSyncType='lstatSync' n=10000 *** 25.49 % ±1.85% ±2.44% ±3.14%
fs\\bench-statSync-failure.js throwType='throw' statSyncType='statSync' n=10000 *** 24.16 % ±1.81% ±2.40% ±3.09%
fs\\bench-statSync.js statSyncType='fstatSync' n=10000 *** 2.86 % ±1.50% ±1.98% ±2.55%
fs\\bench-statSync.js statSyncType='lstatSync' n=10000 *** 194.91 % ±2.89% ±3.82% ±4.93%
fs\\bench-statSync.js statSyncType='statSync' n=10000 *** 194.20 % ±2.72% ±3.60% ±4.65%
fs\\bench-timesSync.js n=1000 func='futimes' type='existing' *** -5.50 % ±2.09% ±2.77% ±3.56%
fs\\bench-timesSync.js n=1000 func='futimes' type='non-existing' -1.75 % ±1.91% ±2.52% ±3.24%
fs\\bench-timesSync.js n=1000 func='lutimes' type='existing' 0.25 % ±1.69% ±2.23% ±2.87%
fs\\bench-timesSync.js n=1000 func='lutimes' type='non-existing' 0.09 % ±1.69% ±2.23% ±2.87%
fs\\bench-timesSync.js n=1000 func='utimes' type='existing' *** -2.36 % ±1.32% ±1.74% ±2.24%
fs\\bench-timesSync.js n=1000 func='utimes' type='non-existing' 1.16 % ±1.68% ±2.22% ±2.86%
fs\\bench-unlinkSync.js n=1000 type='existing' *** -8.08 % ±1.84% ±2.44% ±3.14%
fs\\bench-unlinkSync.js n=1000 type='non-existing' -1.06 % ±1.73% ±2.28% ±2.94%
fs\\bench_fdatasyncSync.js n=10000 type='existing' * -1.95 % ±1.94% ±2.56% ±3.29%
fs\\bench_fdatasyncSync.js n=10000 type='non-existing' *** -3.51 % ±1.66% ±2.19% ±2.82%
Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 86 comparisons, you can thus
expect the following amount of false-positive results:
4.30 false positives, when considering a 5% risk acceptance (*, **, ***),
0.86 false positives, when considering a 1% risk acceptance (**, ***),
0.09 false positives, when considering a 0.1% risk acceptance (***)
confidence improvement accuracy (*) (**) (***)
npm install existing n=10 *** 7.66 % ±0.51% ±0.67% ±0.86%
Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 1 comparisons, you can thus
expect the following amount of false-positive results:
0.05 false positives, when considering a 5% risk acceptance (*, **, ***),
0.01 false positives, when considering a 1% risk acceptance (**, ***),
0.00 false positives, when considering a 0.1% risk acceptance (***)
confidence improvement accuracy (*) (**) (***)
fs\\bench-realpathSync.js pathType='resolved' n=10000 *** 232.90 % ±3.07% ±4.07% ±5.25%
fs\\bench-realpathSync.js pathType='relative' n=10000 *** 230.02 % ±5.03% ±6.67% ±8.63%
fs\\bench-statSync.js statSyncType='lstatSync' n=10000 *** 194.91 % ±2.89% ±3.82% ±4.93%
fs\\bench-statSync.js statSyncType='statSync' n=10000 *** 194.20 % ±2.72% ±3.60% ±4.65%
fs\\bench-mkdirSync.js n=1000 recursive='true' type='existing' *** 79.30 % ±2.89% ±3.82% ±4.93%
fs\\bench-existsSync.js n=1000000 type='non-flat-existing' *** 70.03 % ±1.18% ±1.57% ±2.02%
fs\\bench-existsSync.js n=1000000 type='existing' *** 68.95 % ±1.36% ±1.80% ±2.33%
fs\\bench-stat.js statType='lstat' n=200000 *** 47.94 % ±0.90% ±1.18% ±1.53%
fs\\bench-stat.js statType='stat' n=200000 *** 46.89 % ±0.99% ±1.31% ±1.70%
fs\\bench-stat-promise.js statType='lstat' n=200000 *** 44.17 % ±1.34% ±1.77% ±2.28%
fs\\bench-realpath.js pathType='resolved' n=10000 *** 42.67 % ±1.08% ±1.43% ±1.84%
fs\\bench-stat-promise.js statType='stat' n=200000 *** 42.41 % ±1.15% ±1.52% ±1.95%
fs\\bench-realpath.js pathType='relative' n=10000 *** 32.29 % ±1.16% ±1.53% ±1.97%
fs\\bench-statSync-failure.js throwType='noThrow' statSyncType='statSync' n=10000 *** 26.15 % ±1.80% ±2.38% ±3.06%
fs\\bench-statSync-failure.js throwType='noThrow' statSyncType='lstatSync' n=10000 *** 25.87 % ±1.76% ±2.32% ±2.99%
fs\\bench-statSync-failure.js throwType='throw' statSyncType='lstatSync' n=10000 *** 25.49 % ±1.85% ±2.44% ±3.14%
fs\\bench-fchmodSync.js n=1000 type='existing' *** 25.30 % ±2.22% ±2.93% ±3.77%
fs\\bench-statSync-failure.js throwType='throw' statSyncType='statSync' n=10000 *** 24.16 % ±1.81% ±2.40% ±3.09%
fs\\bench-fchmodSync.js n=1000 type='non-existing' *** 8.94 % ±1.97% ±2.60% ±3.34%
fs\\bench-opendir.js bufferSize=32 mode='sync' dir='lib' n=100 *** 7.31 % ±3.95% ±5.22% ±6.72%
fs\\bench-chmodSync.js n=1000 type='existing' *** 7.16 % ±2.78% ±3.67% ±4.72%
fs\\bench-opendir.js bufferSize=1024 mode='sync' dir='lib' n=100 *** 6.03 % ±3.42% ±4.52% ±5.81%
fs\\bench-renameSync.js n=2000 type='invalid' *** 5.32 % ±1.97% ±2.60% ±3.35%
fs\\bench-rmdirSync.js n=10000 type='existing' *** 4.56 % ±1.98% ±2.61% ±3.36%
fs\\bench-linkSync.js n=1000 type='invalid' *** 4.13 % ±1.88% ±2.49% ±3.20%
fs\\bench-statSync.js statSyncType='fstatSync' n=10000 *** 2.86 % ±1.50% ±1.98% ±2.55%
fs\\bench-mkdtempSync.js n=10000 type='invalid' *** 2.68 % ±1.33% ±1.75% ±2.25%
fs\\bench-opendir.js bufferSize=32 mode='async' dir='test/parallel' n=100 ** 4.35 % ±2.57% ±3.40% ±4.38%
fs\\bench-opendir.js bufferSize=1024 mode='async' dir='test/parallel' n=100 ** 4.08 % ±2.48% ±3.28% ±4.22%
fs\\bench-mkdirSync.js n=1000 recursive='true' type='non-existing' ** 3.04 % ±1.79% ±2.36% ±3.04%
fs\\bench-opendir.js bufferSize=4 mode='callback' dir='lib' n=100 ** 2.65 % ±1.75% ±2.31% ±2.98%
fs\\bench-opendir.js bufferSize=4 mode='async' dir='test/parallel' n=100 ** 1.37 % ±0.90% ±1.19% ±1.53%
fs\\bench-stat.js statType='fstat' n=200000 ** 0.93 % ±0.68% ±0.91% ±1.17%
fs\\bench-chmodSync.js n=1000 type='non-existing' * 3.10 % ±2.42% ±3.19% ±4.11%
fs\\bench-accessSync.js n=100000 type='non-existing' * 1.48 % ±1.37% ±1.81% ±2.33%
fs\\bench-rmdirSync.js n=10000 type='non-existing' * 1.48 % ±1.15% ±1.52% ±1.95%
fs\\bench-accessSync.js n=100000 type='existing' * 1.23 % ±1.02% ±1.34% ±1.73%
fs\\bench-opendir.js bufferSize=4 mode='sync' dir='lib' n=100 3.13 % ±3.42% ±4.52% ±5.82%
fs\\bench-opendir.js bufferSize=1024 mode='sync' dir='test/parallel' n=100 2.26 % ±4.19% ±5.53% ±7.11%
fs\\bench-opendir.js bufferSize=32 mode='sync' dir='test/parallel' n=100 2.06 % ±4.60% ±6.07% ±7.81%
fs\\bench-opendir.js bufferSize=4 mode='async' dir='lib' n=100 1.82 % ±1.87% ±2.47% ±3.17%
fs\\bench-opendir.js bufferSize=4 mode='sync' dir='test/parallel' n=100 1.27 % ±4.59% ±6.06% ±7.80%
fs\\bench-opendirSync.js n=1000 type='non-existing' 1.26 % ±2.96% ±3.92% ±5.05%
fs\\bench-timesSync.js n=1000 func='utimes' type='non-existing' 1.16 % ±1.68% ±2.22% ±2.86%
fs\\bench-opendir.js bufferSize=32 mode='async' dir='lib' n=100 1.13 % ±2.14% ±2.82% ±3.63%
fs\\bench-opendir.js bufferSize=32 mode='callback' dir='test/parallel' n=100 1.07 % ±2.76% ±3.65% ±4.69%
fs\\bench-opendir.js bufferSize=4 mode='callback' dir='test/parallel' n=100 1.02 % ±1.20% ±1.59% ±2.05%
fs\\bench-opendir.js bufferSize=1024 mode='callback' dir='test/parallel' n=100 1.00 % ±3.84% ±5.07% ±6.53%
fs\\bench-existsSync.js n=1000000 type='non-existing' 0.75 % ±0.97% ±1.28% ±1.65%
fs\\bench-readdirSync.js withFileTypes='false' dir='test/parallel' n=10 0.73 % ±2.31% ±3.05% ±3.92%
fs\\bench-opendir.js bufferSize=1024 mode='async' dir='lib' n=100 0.71 % ±1.95% ±2.58% ±3.32%
fs\\bench-readdirSync.js withFileTypes='true' dir='test/parallel' n=10 0.48 % ±2.71% ±3.58% ±4.61%
fs\\bench-stat-promise.js statType='fstat' n=200000 0.45 % ±1.07% ±1.41% ±1.81%
fs\\bench-opendir.js bufferSize=32 mode='callback' dir='lib' n=100 0.38 % ±1.57% ±2.07% ±2.66%
fs\\bench-opendir.js bufferSize=1024 mode='callback' dir='lib' n=100 0.26 % ±1.81% ±2.39% ±3.08%
fs\\bench-timesSync.js n=1000 func='lutimes' type='existing' 0.25 % ±1.69% ±2.23% ±2.87%
fs\\bench-accessSync.js n=100000 type='non-flat-existing' 0.23 % ±1.37% ±1.80% ±2.32%
fs\\bench-openSync.js n=100000 type='non-existing' 0.13 % ±1.65% ±2.17% ±2.80%
fs\\bench-timesSync.js n=1000 func='lutimes' type='non-existing' 0.09 % ±1.69% ±2.23% ±2.87%
fs\\bench-opendirSync.js n=1000 type='existing' -0.08 % ±1.30% ±1.72% ±2.22%
fs\\bench-openSync.js n=100000 type='existing' -0.12 % ±1.57% ±2.07% ±2.66%
fs\\bench-mkdirSync.js n=1000 recursive='false' type='existing' -0.20 % ±1.82% ±2.40% ±3.09%
fs\\bench-mkdirp.js n=10000 -0.28 % ±0.53% ±0.69% ±0.89%
fs\\bench-readdir.js withFileTypes='false' dir='test/parallel' n=10 -0.48 % ±2.01% ±2.65% ±3.42%
fs\\bench-readdirSync.js withFileTypes='false' dir='lib' n=10 -0.60 % ±2.62% ±3.46% ±4.45%
fs\\bench-unlinkSync.js n=1000 type='non-existing' -1.06 % ±1.73% ±2.28% ±2.94%
fs\\bench-fsyncSync.js n=10000 type='existing' -1.56 % ±2.52% ±3.33% ±4.29%
fs\\bench-mkdirSync.js n=1000 recursive='false' type='non-existing' -1.61 % ±1.82% ±2.40% ±3.09%
fs\\bench-timesSync.js n=1000 func='futimes' type='non-existing' -1.75 % ±1.91% ±2.52% ±3.24%
fs\\bench-readdir.js withFileTypes='true' dir='test/parallel' n=10 -1.85 % ±2.75% ±3.64% ±4.69%
fs\\bench-readdir.js withFileTypes='false' dir='lib' n=10 -2.12 % ±2.48% ±3.27% ±4.21%
fs\\bench-readdir.js withFileTypes='true' dir='lib' n=10 -2.34 % ±2.45% ±3.23% ±4.15%
fs\\bench-mkdtempSync.js n=10000 type='valid-buffer' * -1.06 % ±0.97% ±1.28% ±1.65%
fs\\bench-linkSync.js n=1000 type='valid' * -1.08 % ±0.96% ±1.27% ±1.64%
fs\\bench_fdatasyncSync.js n=10000 type='existing' * -1.95 % ±1.94% ±2.56% ±3.29%
fs\\bench-statSync-failure.js throwType='throw' statSyncType='fstatSync' n=10000 * -2.26 % ±2.09% ±2.77% ±3.56%
fs\\bench-readdirSync.js withFileTypes='true' dir='lib' n=10 * -2.49 % ±1.95% ±2.58% ±3.32%
fs\\bench-timesSync.js n=1000 func='utimes' type='existing' *** -2.36 % ±1.32% ±1.74% ±2.24%
fs\\bench-renameSync.js n=2000 type='valid' *** -2.67 % ±1.46% ±1.93% ±2.48%
fs\\bench-fsyncSync.js n=10000 type='non-existing' *** -2.76 % ±1.29% ±1.71% ±2.20%
fs\\bench_fdatasyncSync.js n=10000 type='non-existing' *** -3.51 % ±1.66% ±2.19% ±2.82%
fs\\bench-mkdtempSync.js n=10000 type='valid-string' *** -3.65 % ±1.10% ±1.45% ±1.86%
fs\\bench-ftruncateSync.js n=10000 type='invalid' *** -3.84 % ±2.00% ±2.64% ±3.39%
fs\\bench-timesSync.js n=1000 func='futimes' type='existing' *** -5.50 % ±2.09% ±2.77% ±3.56%
fs\\bench-unlinkSync.js n=1000 type='existing' *** -8.08 % ±1.84% ±2.44% ±3.14%
fs\\bench-ftruncateSync.js n=10000 type='valid' *** -9.86 % ±2.39% ±3.16% ±4.09%
Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 86 comparisons, you can thus
expect the following amount of false-positive results:
4.30 false positives, when considering a 5% risk acceptance (*, **, ***),
0.86 false positives, when considering a 1% risk acceptance (**, ***),
0.09 false positives, when considering a 0.1% risk acceptance (***)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment