github.com/segmentio/encoding@v0.4.0/.github/workflows/benchmark.yml (about)

     1  ---
     2  name: Benchmark
     3  
     4  "on":
     5    - pull_request
     6  
     7  jobs:
     8    benchmark:
     9      strategy:
    10        matrix:
    11          ref:
    12            - master
    13            - ${{ github.sha }}
    14  
    15      runs-on: ubuntu-latest
    16  
    17      steps:
    18        - name: Setup Go
    19          uses: actions/setup-go@v2
    20          with:
    21            go-version: "1.21"
    22  
    23        - name: Checkout
    24          uses: actions/checkout@v2
    25          with:
    26            ref: ${{ matrix.ref }}
    27  
    28        - name: Run Benchmarks
    29          # Without 6 iterations, benchstat will claim statistical insignificance.
    30          run: go test -v -run '^$' -bench '(Marshal|Unmarshal)$/codeResponse' -benchmem -benchtime 3s -cpu 1 -count 6 ./json | tee bench.txt
    31  
    32        - name: Upload Benchmarks
    33          uses: actions/upload-artifact@v2
    34          with:
    35            name: ${{ matrix.ref }}
    36            path: bench.txt
    37  
    38    benchstat:
    39      needs: [benchmark]
    40      runs-on: ubuntu-latest
    41  
    42      steps:
    43        - name: Steup Go
    44          uses: actions/setup-go@v2
    45          with:
    46            go-version: "1.21"
    47  
    48        - name: Setup Benchstat
    49          run: go install golang.org/x/perf/cmd/benchstat@latest
    50  
    51        - name: Download Benchmark Results
    52          uses: actions/download-artifact@v2
    53          with:
    54            path: .
    55  
    56        - name: Run Benchstat
    57          run: benchstat ./master/bench.txt ./${{ github.sha }}/bench.txt | tee benchstat.txt
    58  
    59        - name: Upload Benchstat Results
    60          uses: actions/upload-artifact@v2
    61          with:
    62            name: benchstat
    63            path: benchstat.txt