all repos

clerk @ 2ca3278ede09b510e058a42bcca8f9e4ffcc7bfa

missing tooling for ledger/hledger

clerk/.github/workflows/benchmarks.yml (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
ci: split test runner and fuzz tests, 2 months ago
1
name: benchmarks
2
3
on:
4
  push:
5
    branches: [master]
6
  pull_request:
7
  workflow_dispatch:
8
9
concurrency:
10
  group: benchmarks-${{ github.ref }}
11
  cancel-in-progress: true
12
13
permissions:
14
  contents: read
15
16
jobs:
17
  bench:
18
    runs-on: ubuntu-latest
19
    timeout-minutes: 30
20
    steps:
21
      - uses: actions/checkout@v4
22
      - uses: actions/setup-go@v5
23
        with:
24
          go-version-file: go.mod
25
26
      - name: Install benchstat
27
        run: |
28
          go install golang.org/x/perf/cmd/benchstat@latest
29
          echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH"
30
31
      - name: Run benchmarks
32
        run: go test -bench . -benchmem -run '^$' -count=10 -benchtime=200x ./... > bench.txt 2>&1
33
34
      - name: Restore baseline
35
        id: baseline
36
        uses: actions/cache/restore@v4
37
        with:
38
          path: bench-baseline.txt
39
          key: bench-${{ runner.os }}-${{ github.sha }}
40
          restore-keys: bench-${{ runner.os }}-
41
42
      - name: Print comparison
43
        if: steps.baseline.outputs.cache-hit == 'true'
44
        run: benchstat bench-baseline.txt bench.txt
45
46
      - name: Check for regressions
47
        if: steps.baseline.outputs.cache-hit == 'true'
48
        run: |
49
          benchstat -format csv bench-baseline.txt bench.txt 2>/dev/null | \
50
            python3 .github/scripts/check-bench-regression.py
51
52
      - name: Save baseline
53
        if: github.ref == 'refs/heads/main'
54
        uses: actions/cache/save@v4
55
        with:
56
          path: bench.txt
57
          key: bench-${{ runner.os }}-${{ github.sha }}