From 660d34f48de8139e6593fd941513314e30c3435e Mon Sep 17 00:00:00 2001 From: John Haugeland Date: Tue, 19 Apr 2022 11:50:39 -0700 Subject: [PATCH] getting ready to diff the benchmarks too --- .github/workflows/nodejs.yml | 10 ++++--- src/buildjs/benchmark_diff.js | 56 +++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 src/buildjs/benchmark_diff.js diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index f783f3d5..b174d854 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -9,11 +9,11 @@ jobs: strategy: matrix: include: - - node-version: 17.x # fastest, so run first, to error fast + - node-version: 18.x # fastest, so run first, to error fast os: ubuntu-latest - - node-version: 17.x # slowest, so run next. sort by slowest from here to get earliest end through parallelism + - node-version: 18.x # slowest, so run next. sort by slowest from here to get earliest end through parallelism os: macos-latest - - node-version: 17.x # finish check big-3 on latest current + - node-version: 18.x # finish check big-3 on latest current os: windows-latest - node-version: 10.x # lastly check just ubuntu on historic node versions because speed, oldest (slowest) first os: ubuntu-latest @@ -29,6 +29,8 @@ jobs: os: ubuntu-latest - node-version: 16.x os: ubuntu-latest + - node-version: 17.x + os: ubuntu-latest runs-on: ${{matrix.os}} @@ -50,7 +52,7 @@ jobs: path-to-lcov: ./coverage/spec/lcov.info verify-version-bump-then-release: - if: (github.event.pusher.name == github.event.repository.owner.name) + if: (github.event.pusher.name == github.event.repository.owner.name) && (github.ref == 'refs/heads/main') needs: build runs-on: ubuntu-latest diff --git a/src/buildjs/benchmark_diff.js b/src/buildjs/benchmark_diff.js new file mode 100644 index 00000000..4f9d2454 --- /dev/null +++ b/src/buildjs/benchmark_diff.js @@ -0,0 +1,56 @@ + +const fs = require('fs'); + +const fileA = JSON.parse(fs.readFileSync(process.argv[2]).toString()), + fileB = JSON.parse(fs.readFileSync(process.argv[3]).toString()); + + + + + +const diffs = fileB.results.map( (resultB) => { + + const oldResult = fileA.results.find( + (resultA) => resultA.name === resultB.name, + ); + + if (!oldResult) { + return { name: resultB.name, diff: null }; + } + + const diff = ((resultB.ops - oldResult.ops) / oldResult.ops) * 100; + + return { + name: resultB.name, + diff, + }; + +}); + + + +console.log( + + diffs + .map( + ({ name, diff }) => + `${name}: ${diff.toFixed(2)}% ${ + diff > 0 ? 'faster' : diff < 0 ? 'slower' : 'same' + }`, + ) + .join('\n') + +); + + + +const changed = diffs.filter((item) => item.diff !== null), + average = changed.reduce((a, b) => a + b.diff, 0) / changed.length; + + + +console.log( + `Average: ${average.toFixed(2)}% ${ + average > 0 ? 'faster' : average < 0 ? 'slower' : 'same' + }`, +) \ No newline at end of file