From 3893853e7d0400ccc8c14c7450ce1444f94b54a7 Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 09:11:47 +0000 Subject: [PATCH 01/11] Add scripts for comparing perf test result files --- bin/perf-test-results/compare-multiple.js | 53 ++++++++++ bin/perf-test-results/compare-two.js | 8 ++ bin/perf-test-results/lib.js | 120 ++++++++++++++++++++++ 3 files changed, 181 insertions(+) create mode 100755 bin/perf-test-results/compare-multiple.js create mode 100755 bin/perf-test-results/compare-two.js create mode 100644 bin/perf-test-results/lib.js diff --git a/bin/perf-test-results/compare-multiple.js b/bin/perf-test-results/compare-multiple.js new file mode 100755 index 0000000000..708261685c --- /dev/null +++ b/bin/perf-test-results/compare-multiple.js @@ -0,0 +1,53 @@ +#!/usr/bin/env node +const { loadResultFile, printComparisonReport, SUITE_FOR } = require('./lib'); + +const [ , , ...files ] = process.argv; + +const rawResults = files.map(loadResultFile); + +const adapters = []; +const testSuites = {}; +const resultsByAdapter = {}; + +const adapterFilter = process.env.ADAPTERS?.split(','); +const gitFilter = process.env.COMMITS ?.split(',')?.map(commit => commit.substring(0, 7)); + +rawResults.forEach(({ adapter, results }) => { + if(adapterFilter) { + if(!adapterFilter.includes(adapter.split(':')[0])) return; + } + if(gitFilter) { + if(!gitFilter.includes(adapter.split(':')[1])) return; + } + + if(!adapters.includes(adapter)) { + adapters.push(adapter); + resultsByAdapter[adapter] = {}; + } + + Object.entries(results).forEach(([ t, { median } ]) => { + const suite = SUITE_FOR[t] || 'TODO:suite-mapping'; + + if(!testSuites[suite]) testSuites[suite] = []; + if(!testSuites[suite].includes(t)) testSuites[suite].push(t); + + if(!resultsByAdapter[adapter][suite]) resultsByAdapter[adapter][suite] = {}; + if(!resultsByAdapter[adapter][suite][t]) resultsByAdapter[adapter][suite][t] = { numIterations:0, min:Number.MAX_VALUE }; + + resultsByAdapter[adapter][suite][t].min = Math.min(resultsByAdapter[adapter][suite][t].min, median); + resultsByAdapter[adapter][suite][t].numIterations++; + }); +}); + +if(adapters.length < 2) { + console.log('!!! At least 2 different adapters are required to make comparisons!'); + process.exit(1); +} + +adapters.sort(); + +const sortedResults = adapters.map(adapter => ({ + adapter, results:resultsByAdapter[adapter] +})); + +printComparisonReport({ useStat:'min' }, ...sortedResults); diff --git a/bin/perf-test-results/compare-two.js b/bin/perf-test-results/compare-two.js new file mode 100755 index 0000000000..b808f9ac63 --- /dev/null +++ b/bin/perf-test-results/compare-two.js @@ -0,0 +1,8 @@ +const { loadResultFile, printComparisonReport } = require('./lib'); + +const [ , , ...files ] = process.argv; +if(files.length !== 2) throw new Error('Can currently only compare 2 results.'); + +const [ a, b ] = files.map(loadResultFile); + +printComparisonReport(a, b, { useStat:'median' }); diff --git a/bin/perf-test-results/lib.js b/bin/perf-test-results/lib.js new file mode 100644 index 0000000000..ef67aaef04 --- /dev/null +++ b/bin/perf-test-results/lib.js @@ -0,0 +1,120 @@ +// Current JSON reporter does not save suite names. These are hardcoded from +// the test files. +const SUITE_FOR = { + 'basic-inserts': 'basics', + 'bulk-inserts': 'basics', + 'bulk-inserts-large-docs': 'basics', + 'bulk-inserts-massive-docs': 'basics', + 'basic-updates': 'basics', + 'basic-gets': 'basics', + 'all-docs-skip-limit': 'basics', + 'all-docs-startkey-endkey': 'basics', + 'all-docs-keys': 'basics', + 'all-docs-include-docs': 'basics', + 'pull-replication-one-generation': 'basics', + 'pull-replication-two-generation': 'basics', + 'temp-views': 'views', + 'build-secondary-index': 'views', + 'persisted-views': 'views', + 'persisted-views-stale-ok': 'views', + 'create-index': 'find', + 'simple-find-query': 'find', + 'simple-find-query-no-index': 'find', + 'complex-find-query': 'find', + 'complex-find-query-no-index': 'find', + 'multi-field-query': 'find', + 'basic-attachments': 'attachments', +}; + +module.exports = { + loadResultFile, + printComparisonReport, + SUITE_FOR, +}; + +const fs = require('node:fs'); +const { basename } = require('node:path'); + +function loadResultFile(file) { + console.error(`[compare-perf-results.lib]`, 'Loading file:', file, '...'); + const { adapter, gitDescription:gitHash, tests:results } = JSON.parse(fs.readFileSync(file, { encoding:'utf8' })); + return { adapter:`${adapter}:${gitHash.substring(0, 7)}`, results }; +} + +function report (...args) { console.log(' ', ...args); } + +const colFormat = idx => { + switch(idx) { + case 0: return { width:11, pad:'padEnd' }; + case 1: return { width:31, pad:'padEnd' }; + } + if(idx & 1) return { width:17, pad:'padStart' }; + else return { width:17, pad:'padStart' }; +}; +function reportTableRow(...cols) { + report(cols.map((c, i) => { + const { width, pad } = colFormat(i); + return (c?.toString()??'-')[pad](width, ' '); + }).join(' | ')); +} +function reportTableDivider(results) { + let totalWidth = -3; + for(let i=(results.length*2)+1; i>=0; --i) { + totalWidth += colFormat(i).width + 3; + } + report(''.padStart(totalWidth, '-')); +} + +function forHumans(n) { + return n?.toFixed(2); +} + +function printComparisonReport({ useStat }, ...results) { + report(); + report('Using stat:', useStat); + report('Comparing adapters:'); + results.map(({ adapter }) => report(' *', adapter)); + report(); + reportTableRow('', '', ...results.map(r => [ r.adapter, r.adapter ]).flat()); + reportTableRow('', '', ...results.map(() => [ 'iterations', useStat, ]).flat()); + + const [ a, ...others ] = results; + Object.entries(a.results) + .forEach(([ suite, suiteResults ]) => { + //console.log({ suite, suiteResults }); + Object.entries(suiteResults) + .forEach(([ test, testResults ], idx) => { + //console.log({ idx, test, testResults }); + if(!idx) reportTableDivider(results); + suiteName = idx ? '' : suite; + + const resA = testResults[useStat]; + const iterationsA = testResults.numIterations; + + const resOthers = others.map(b => b.results[suite]?.[test]?.[useStat]); + const iterationsOther = others.map(b => b.results[suite]?.[test]?.numIterations); + reportTableRow(suiteName, test, + iterationsA, + forHumans(resA) + isBetter(resA, ...resOthers), + ...others.map((_, i) => [ + iterationsOther[i], + forHumans(resOthers[i]) + isBetter(resOthers[i], resA, ...arrWithout(resOthers, i)), + ]).flat(), + ); + }); + }); + report(); +} + +function isBetter(a, ...others) { + const minOthers = Math.min(...others); + + if(Math.abs(a - minOthers) / a < 0.05) return ' ~'; // less than 5 percent different - is it significant? do we care? + if(a < minOthers) return ' !'; + if(a === minOthers) return ' !'; + return ' '; +} + +function arrWithout(arr, idx) { + return [ ...arr.slice(0, idx), ...arr.slice(idx+1) ]; +} From 5bd2b57f926af1b6b22e8f499c863b17dbfa4240 Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 09:15:23 +0000 Subject: [PATCH 02/11] remove console.log() --- bin/perf-test-results/lib.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/bin/perf-test-results/lib.js b/bin/perf-test-results/lib.js index ef67aaef04..5dba697ba7 100644 --- a/bin/perf-test-results/lib.js +++ b/bin/perf-test-results/lib.js @@ -81,10 +81,8 @@ function printComparisonReport({ useStat }, ...results) { const [ a, ...others ] = results; Object.entries(a.results) .forEach(([ suite, suiteResults ]) => { - //console.log({ suite, suiteResults }); Object.entries(suiteResults) .forEach(([ test, testResults ], idx) => { - //console.log({ idx, test, testResults }); if(!idx) reportTableDivider(results); suiteName = idx ? '' : suite; From b23a1bcfdad08775f366f0ac187e12c86130053d Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 09:27:15 +0000 Subject: [PATCH 03/11] add shebang --- bin/perf-test-results/compare-two.js | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/perf-test-results/compare-two.js b/bin/perf-test-results/compare-two.js index b808f9ac63..61363c9b43 100755 --- a/bin/perf-test-results/compare-two.js +++ b/bin/perf-test-results/compare-two.js @@ -1,3 +1,4 @@ +#!/usr/bin/env node const { loadResultFile, printComparisonReport } = require('./lib'); const [ , , ...files ] = process.argv; From 6e184c0cd4f86f97f72ad53f84e8199313e0fc40 Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 09:47:10 +0000 Subject: [PATCH 04/11] fix description col --- bin/perf-test-results/compare-two.js | 2 +- bin/perf-test-results/lib.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/bin/perf-test-results/compare-two.js b/bin/perf-test-results/compare-two.js index 61363c9b43..bdb25b92e3 100755 --- a/bin/perf-test-results/compare-two.js +++ b/bin/perf-test-results/compare-two.js @@ -6,4 +6,4 @@ if(files.length !== 2) throw new Error('Can currently only compare 2 results.'); const [ a, b ] = files.map(loadResultFile); -printComparisonReport(a, b, { useStat:'median' }); +printComparisonReport({ useStat:'median' }, a, b); diff --git a/bin/perf-test-results/lib.js b/bin/perf-test-results/lib.js index 5dba697ba7..2e213295c0 100644 --- a/bin/perf-test-results/lib.js +++ b/bin/perf-test-results/lib.js @@ -37,8 +37,10 @@ const { basename } = require('node:path'); function loadResultFile(file) { console.error(`[compare-perf-results.lib]`, 'Loading file:', file, '...'); - const { adapter, gitDescription:gitHash, tests:results } = JSON.parse(fs.readFileSync(file, { encoding:'utf8' })); - return { adapter:`${adapter}:${gitHash.substring(0, 7)}`, results }; + const { adapter, srcRoot, tests:results } = JSON.parse(fs.readFileSync(file, { encoding:'utf8' })); + const gitMatch = srcRoot.match(/^\.\.\/\.\.\/dist-bundles\/([0-9a-f]{40})$/); + const description = gitMatch?.[1]?.substr(0,7) || srcRoot; + return { adapter:`${adapter}:${description}`, results }; } function report (...args) { console.log(' ', ...args); } From 23343bf06860f8909623e33c0788cdc85995fd8c Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 09:54:42 +0000 Subject: [PATCH 05/11] fix compare-two --- bin/perf-test-results/compare-two.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/bin/perf-test-results/compare-two.js b/bin/perf-test-results/compare-two.js index bdb25b92e3..c35724218b 100755 --- a/bin/perf-test-results/compare-two.js +++ b/bin/perf-test-results/compare-two.js @@ -1,9 +1,23 @@ #!/usr/bin/env node -const { loadResultFile, printComparisonReport } = require('./lib'); +const { loadResultFile, printComparisonReport, SUITE_FOR } = require('./lib'); const [ , , ...files ] = process.argv; if(files.length !== 2) throw new Error('Can currently only compare 2 results.'); const [ a, b ] = files.map(loadResultFile); -printComparisonReport({ useStat:'median' }, a, b); +printComparisonReport({ useStat:'median' }, remap(a), remap(b)); + +function remap({ adapter, results }) { + const suiteResults = {}; + for (const [ name, { median, numIterations } ] of Object.entries(results)) { + const suiteName = SUITE_FOR[name]; + if (!suiteResults[suiteName]) suiteResults[suiteName] = {}; + suiteResults[suiteName][name] = { median, numIterations }; + console.log(suiteName, name, median, numIterations); + } + return { + adapter, + results: suiteResults, + }; +} From b492b809d1832f98d8a30959ba2fa829ebd86c17 Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 09:55:19 +0000 Subject: [PATCH 06/11] remove console.log --- bin/perf-test-results/compare-two.js | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/perf-test-results/compare-two.js b/bin/perf-test-results/compare-two.js index c35724218b..2c57f386a5 100755 --- a/bin/perf-test-results/compare-two.js +++ b/bin/perf-test-results/compare-two.js @@ -14,7 +14,6 @@ function remap({ adapter, results }) { const suiteName = SUITE_FOR[name]; if (!suiteResults[suiteName]) suiteResults[suiteName] = {}; suiteResults[suiteName][name] = { median, numIterations }; - console.log(suiteName, name, median, numIterations); } return { adapter, From 746d7637a9324214e8d1b726e25388b5f79fa4be Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 10:03:11 +0000 Subject: [PATCH 07/11] lint --- bin/perf-test-results/compare-multiple.js | 26 +++++++++--------- bin/perf-test-results/compare-two.js | 4 ++- bin/perf-test-results/lib.js | 33 ++++++++++++----------- 3 files changed, 34 insertions(+), 29 deletions(-) diff --git a/bin/perf-test-results/compare-multiple.js b/bin/perf-test-results/compare-multiple.js index 708261685c..6d547a2111 100755 --- a/bin/perf-test-results/compare-multiple.js +++ b/bin/perf-test-results/compare-multiple.js @@ -1,4 +1,6 @@ #!/usr/bin/env node +/* eslint-disable curly,max-len */ + const { loadResultFile, printComparisonReport, SUITE_FOR } = require('./lib'); const [ , , ...files ] = process.argv; @@ -9,18 +11,18 @@ const adapters = []; const testSuites = {}; const resultsByAdapter = {}; -const adapterFilter = process.env.ADAPTERS?.split(','); -const gitFilter = process.env.COMMITS ?.split(',')?.map(commit => commit.substring(0, 7)); +const adapterFilter = process.env.ADAPTERS && process.env.ADAPTERS.split(','); +const gitFilter = process.env.COMMITS && process.env.COMMITS.split(',').map(commit => commit.substring(0, 7)); rawResults.forEach(({ adapter, results }) => { - if(adapterFilter) { - if(!adapterFilter.includes(adapter.split(':')[0])) return; + if (adapterFilter) { + if (!adapterFilter.includes(adapter.split(':')[0])) return; } - if(gitFilter) { - if(!gitFilter.includes(adapter.split(':')[1])) return; + if (gitFilter) { + if (!gitFilter.includes(adapter.split(':')[1])) return; } - if(!adapters.includes(adapter)) { + if (!adapters.includes(adapter)) { adapters.push(adapter); resultsByAdapter[adapter] = {}; } @@ -28,18 +30,18 @@ rawResults.forEach(({ adapter, results }) => { Object.entries(results).forEach(([ t, { median } ]) => { const suite = SUITE_FOR[t] || 'TODO:suite-mapping'; - if(!testSuites[suite]) testSuites[suite] = []; - if(!testSuites[suite].includes(t)) testSuites[suite].push(t); + if (!testSuites[suite]) testSuites[suite] = []; + if (!testSuites[suite].includes(t)) testSuites[suite].push(t); - if(!resultsByAdapter[adapter][suite]) resultsByAdapter[adapter][suite] = {}; - if(!resultsByAdapter[adapter][suite][t]) resultsByAdapter[adapter][suite][t] = { numIterations:0, min:Number.MAX_VALUE }; + if (!resultsByAdapter[adapter][suite]) resultsByAdapter[adapter][suite] = {}; + if (!resultsByAdapter[adapter][suite][t]) resultsByAdapter[adapter][suite][t] = { numIterations:0, min:Number.MAX_VALUE }; resultsByAdapter[adapter][suite][t].min = Math.min(resultsByAdapter[adapter][suite][t].min, median); resultsByAdapter[adapter][suite][t].numIterations++; }); }); -if(adapters.length < 2) { +if (adapters.length < 2) { console.log('!!! At least 2 different adapters are required to make comparisons!'); process.exit(1); } diff --git a/bin/perf-test-results/compare-two.js b/bin/perf-test-results/compare-two.js index 2c57f386a5..b192ff3c20 100755 --- a/bin/perf-test-results/compare-two.js +++ b/bin/perf-test-results/compare-two.js @@ -1,8 +1,10 @@ #!/usr/bin/env node +/* eslint-disable curly */ + const { loadResultFile, printComparisonReport, SUITE_FOR } = require('./lib'); const [ , , ...files ] = process.argv; -if(files.length !== 2) throw new Error('Can currently only compare 2 results.'); +if (files.length !== 2) throw new Error('Can currently only compare 2 results.'); const [ a, b ] = files.map(loadResultFile); diff --git a/bin/perf-test-results/lib.js b/bin/perf-test-results/lib.js index 2e213295c0..7771a41c8c 100644 --- a/bin/perf-test-results/lib.js +++ b/bin/perf-test-results/lib.js @@ -1,3 +1,5 @@ +/* eslint-disable curly */ + // Current JSON reporter does not save suite names. These are hardcoded from // the test files. const SUITE_FOR = { @@ -33,42 +35,41 @@ module.exports = { }; const fs = require('node:fs'); -const { basename } = require('node:path'); function loadResultFile(file) { console.error(`[compare-perf-results.lib]`, 'Loading file:', file, '...'); const { adapter, srcRoot, tests:results } = JSON.parse(fs.readFileSync(file, { encoding:'utf8' })); const gitMatch = srcRoot.match(/^\.\.\/\.\.\/dist-bundles\/([0-9a-f]{40})$/); - const description = gitMatch?.[1]?.substr(0,7) || srcRoot; + const description = (gitMatch && gitMatch[1].substr(0,7)) || srcRoot; return { adapter:`${adapter}:${description}`, results }; } -function report (...args) { console.log(' ', ...args); } +function report(...args) { console.log(' ', ...args); } const colFormat = idx => { - switch(idx) { + switch (idx) { case 0: return { width:11, pad:'padEnd' }; case 1: return { width:31, pad:'padEnd' }; } - if(idx & 1) return { width:17, pad:'padStart' }; + if (idx & 1) return { width:17, pad:'padStart' }; else return { width:17, pad:'padStart' }; }; function reportTableRow(...cols) { report(cols.map((c, i) => { const { width, pad } = colFormat(i); - return (c?.toString()??'-')[pad](width, ' '); + return ((c && c.toString()) || '-')[pad](width, ' '); }).join(' | ')); } function reportTableDivider(results) { let totalWidth = -3; - for(let i=(results.length*2)+1; i>=0; --i) { + for (let i=(results.length*2)+1; i>=0; --i) { totalWidth += colFormat(i).width + 3; } report(''.padStart(totalWidth, '-')); } function forHumans(n) { - return n?.toFixed(2); + return n ? n.toFixed(2) : null; } function printComparisonReport({ useStat }, ...results) { @@ -78,21 +79,21 @@ function printComparisonReport({ useStat }, ...results) { results.map(({ adapter }) => report(' *', adapter)); report(); reportTableRow('', '', ...results.map(r => [ r.adapter, r.adapter ]).flat()); - reportTableRow('', '', ...results.map(() => [ 'iterations', useStat, ]).flat()); + reportTableRow('', '', ...results.map(() => [ 'iterations', useStat ]).flat()); const [ a, ...others ] = results; Object.entries(a.results) .forEach(([ suite, suiteResults ]) => { Object.entries(suiteResults) .forEach(([ test, testResults ], idx) => { - if(!idx) reportTableDivider(results); - suiteName = idx ? '' : suite; + if (!idx) reportTableDivider(results); + const suiteName = idx ? '' : suite; const resA = testResults[useStat]; const iterationsA = testResults.numIterations; - const resOthers = others.map(b => b.results[suite]?.[test]?.[useStat]); - const iterationsOther = others.map(b => b.results[suite]?.[test]?.numIterations); + const resOthers = others.map(b => b.results[suite][test][useStat]); + const iterationsOther = others.map(b => b.results[suite][test].numIterations); reportTableRow(suiteName, test, iterationsA, forHumans(resA) + isBetter(resA, ...resOthers), @@ -109,9 +110,9 @@ function printComparisonReport({ useStat }, ...results) { function isBetter(a, ...others) { const minOthers = Math.min(...others); - if(Math.abs(a - minOthers) / a < 0.05) return ' ~'; // less than 5 percent different - is it significant? do we care? - if(a < minOthers) return ' !'; - if(a === minOthers) return ' !'; + if (Math.abs(a - minOthers) / a < 0.05) return ' ~'; // less than 5 percent different - is it significant? do we care? + if (a < minOthers) return ' !'; + if (a === minOthers) return ' !'; return ' '; } From 1d620e736bd249c26e898d65ff66e4bf9c5b7627 Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 10:03:15 +0000 Subject: [PATCH 08/11] handle null --- bin/perf-test-results/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/perf-test-results/lib.js b/bin/perf-test-results/lib.js index 7771a41c8c..f57ccf724f 100644 --- a/bin/perf-test-results/lib.js +++ b/bin/perf-test-results/lib.js @@ -69,7 +69,7 @@ function reportTableDivider(results) { } function forHumans(n) { - return n ? n.toFixed(2) : null; + return n != null ? n.toFixed(2) : null; } function printComparisonReport({ useStat }, ...results) { From ff104bd619214c6bdb0b4cc017e186fc53dd74a1 Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 10:19:41 +0000 Subject: [PATCH 09/11] Add TODO --- bin/perf-test-results/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/perf-test-results/lib.js b/bin/perf-test-results/lib.js index f57ccf724f..588439958d 100644 --- a/bin/perf-test-results/lib.js +++ b/bin/perf-test-results/lib.js @@ -31,7 +31,7 @@ const SUITE_FOR = { module.exports = { loadResultFile, printComparisonReport, - SUITE_FOR, + SUITE_FOR, // TODO instead of exporting here, do remapping inside printComparisonReport() }; const fs = require('node:fs'); From e24f6c5699f06baea624001ee26bd5b5b8dbbb90 Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 15:39:12 +0000 Subject: [PATCH 10/11] Add client filter, browser name --- bin/perf-test-results/compare-multiple.js | 6 +++++- bin/perf-test-results/lib.js | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/bin/perf-test-results/compare-multiple.js b/bin/perf-test-results/compare-multiple.js index 6d547a2111..7fd55930a3 100755 --- a/bin/perf-test-results/compare-multiple.js +++ b/bin/perf-test-results/compare-multiple.js @@ -11,16 +11,20 @@ const adapters = []; const testSuites = {}; const resultsByAdapter = {}; +const clientFilter = process.env.CLIENT; const adapterFilter = process.env.ADAPTERS && process.env.ADAPTERS.split(','); const gitFilter = process.env.COMMITS && process.env.COMMITS.split(',').map(commit => commit.substring(0, 7)); -rawResults.forEach(({ adapter, results }) => { +rawResults.forEach(({ adapter, client, results }) => { if (adapterFilter) { if (!adapterFilter.includes(adapter.split(':')[0])) return; } if (gitFilter) { if (!gitFilter.includes(adapter.split(':')[1])) return; } + if (clientFilter) { + if(client.toLowerCase() !== clientFilter.toLowerCase()) return; + } if (!adapters.includes(adapter)) { adapters.push(adapter); diff --git a/bin/perf-test-results/lib.js b/bin/perf-test-results/lib.js index 588439958d..e7b6822e58 100644 --- a/bin/perf-test-results/lib.js +++ b/bin/perf-test-results/lib.js @@ -26,6 +26,8 @@ const SUITE_FOR = { 'complex-find-query-no-index': 'find', 'multi-field-query': 'find', 'basic-attachments': 'attachments', + 'many-attachments-base64': 'attachments', + 'many-attachments-binary': 'attachments', }; module.exports = { @@ -38,10 +40,14 @@ const fs = require('node:fs'); function loadResultFile(file) { console.error(`[compare-perf-results.lib]`, 'Loading file:', file, '...'); - const { adapter, srcRoot, tests:results } = JSON.parse(fs.readFileSync(file, { encoding:'utf8' })); + const { adapter, client, srcRoot, tests:results } = JSON.parse(fs.readFileSync(file, { encoding:'utf8' })); + const gitMatch = srcRoot.match(/^\.\.\/\.\.\/dist-bundles\/([0-9a-f]{40})$/); const description = (gitMatch && gitMatch[1].substr(0,7)) || srcRoot; - return { adapter:`${adapter}:${description}`, results }; + + const browserName = client.browser.name; + + return { adapter:`${adapter}:${description}`, client:browserName, results }; } function report(...args) { console.log(' ', ...args); } From 317f6a8d59c8f5a85d3ea806e23898b138a4e1d7 Mon Sep 17 00:00:00 2001 From: alxndrsn Date: Tue, 26 Mar 2024 15:51:15 +0000 Subject: [PATCH 11/11] lint --- bin/perf-test-results/compare-multiple.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/perf-test-results/compare-multiple.js b/bin/perf-test-results/compare-multiple.js index 7fd55930a3..bd5b97782a 100755 --- a/bin/perf-test-results/compare-multiple.js +++ b/bin/perf-test-results/compare-multiple.js @@ -23,7 +23,7 @@ rawResults.forEach(({ adapter, client, results }) => { if (!gitFilter.includes(adapter.split(':')[1])) return; } if (clientFilter) { - if(client.toLowerCase() !== clientFilter.toLowerCase()) return; + if (client.toLowerCase() !== clientFilter.toLowerCase()) return; } if (!adapters.includes(adapter)) {