From dad510332cf685df270745b81b4e34fd5cd83603 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Sat, 23 Nov 2024 14:15:24 -0800 Subject: [PATCH 1/4] Run benchmarks in CI --- .github/workflows/benchmark.yml | 71 +++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/workflows/benchmark.yml diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 0000000000..1634410c42 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,71 @@ +name: Benchmark + +on: + push: + branches: + - main + pull_request: + branches: + - main + +permissions: + contents: read + +# Ensure scripts are run with pipefail. See: +# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference +defaults: + run: + shell: bash + +jobs: + benchmark: + runs-on: + - 'self-hosted' + - '1ES.Pool=TypeScript-1ES-GitHub-Large' + - '1ES.ImageOverride=mariner-2.0' + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + submodules: true + - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + with: + go-version: '>=1.23.0' + + - run: npm ci + + - name: Run benchmark + run: go test -run='^$' -bench=. -benchmem -count=10 ./... > new.txt + + - name: Switch to parent commit + run: git switch --detach HEAD^1 + + - run: npm ci + + - run: git submodule update --init --recursive + + - name: Run benchmark + run: go test -run='^$' -bench=. -benchmem -count=10 ./... > old.txt + + - run: go install golang.org/x/perf/cmd/benchstat@latest + + - name: Compare benchmarks + run: benchstat old.txt new.txt | tee benchstat.txt + + - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + with: + name: benchmarks + path: | + old.txt + new.txt + benchstat.txt + + - name: Create step summary + run: | + echo "See $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID for more info." + echo "# Benchmark Results" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + cat benchstat.txt >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY From 6de5dc38a7a92074dba7886cde7cc8152f23c562 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Sat, 23 Nov 2024 15:00:47 -0800 Subject: [PATCH 2/4] Don't use pool for now --- .github/workflows/benchmark.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 1634410c42..73f4679287 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -19,10 +19,11 @@ defaults: jobs: benchmark: - runs-on: - - 'self-hosted' - - '1ES.Pool=TypeScript-1ES-GitHub-Large' - - '1ES.ImageOverride=mariner-2.0' + runs-on: ubuntu-latest + # runs-on: + # - 'self-hosted' + # - '1ES.Pool=TypeScript-1ES-GitHub-Large' + # - '1ES.ImageOverride=mariner-2.0' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 From f58c2f136edae7dd7988872dbf2d40809502c971 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Sat, 23 Nov 2024 15:01:58 -0800 Subject: [PATCH 3/4] Use tee --- .github/workflows/benchmark.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 73f4679287..153f72d2f0 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -37,7 +37,7 @@ jobs: - run: npm ci - name: Run benchmark - run: go test -run='^$' -bench=. -benchmem -count=10 ./... > new.txt + run: go test -run='^$' -bench=. -benchmem -count=10 ./... | tee new.txt - name: Switch to parent commit run: git switch --detach HEAD^1 @@ -47,7 +47,7 @@ jobs: - run: git submodule update --init --recursive - name: Run benchmark - run: go test -run='^$' -bench=. -benchmem -count=10 ./... > old.txt + run: go test -run='^$' -bench=. -benchmem -count=10 ./... | tee old.txt - run: go install golang.org/x/perf/cmd/benchstat@latest From cc13348845e292a37424adaf75944d1dbe6aeabf Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Sat, 23 Nov 2024 15:13:15 -0800 Subject: [PATCH 4/4] Download tree --- .github/workflows/benchmark.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 153f72d2f0..1e714f7e31 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -29,6 +29,8 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: true + filter: blob:none # https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/ + fetch-depth: 0 # Default is 1; need to set to 0 to get the benefits of blob:none. - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: