name: diff

on:
  pull_request:
    branches: [ master ]

jobs:
  bench:
    runs-on: ubuntu-latest
    steps:
      - name: Setup Go 1.18
        uses: actions/setup-go@v4
        with:
          go-version: 1.18
      - name: Install benchstat
        # NOTE: benchstat@latest requires go 1.23 since 2025-02-14 - this is the last go 1.18 ref
        # https://cs.opensource.google/go/x/perf/+/c95ad7d5b636f67d322a7e4832e83103d0fdd292
        run: go install golang.org/x/perf/cmd/benchstat@884df5810d2850d775c2cb4885a7ea339128a17d

      - uses: actions/checkout@v3
      - name: Benchmark new code
        run: go test -bench=. -benchmem -run=^$ -count=10 -timeout=30m | tee /tmp/new.txt

      - name: Checkout master
        uses: actions/checkout@v3
        with:
          ref: master
      - name: Benchmark master
        run: go test -bench=. -benchmem -run=^$ -count=10 -timeout=30m | tee /tmp/old.txt

      - name: Diff
        run: benchstat /tmp/old.txt /tmp/new.txt
