Skip to content
Latchkey

Benchmark workflow (hyperium/hyper)

The Benchmark workflow from hyperium/hyper, explained and optimized by Latchkey.

C

CI health: C - fair

Point runs-on at Latchkey and get run de-duplication, job timeouts, SHA-pinned actions, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: hyperium/hyper.github/workflows/bench.ymlLicense MITView source

What it does

This is the Benchmark workflow from the hyperium/hyper repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: Benchmark
on:
  push:
    branches:
      - master

jobs:
  benchmark:
    name: Benchmark
    runs-on: ubuntu-latest
    strategy:
      matrix:
        bench:
          - end_to_end
          - pipeline
    steps:
      - uses: actions/checkout@v6

      - name: Install Rust
        uses: dtolnay/rust-toolchain@nightly

      # Run benchmark and stores the output to a file
      - name: Run benchmark
        run: cargo bench --features full --bench ${{ matrix.bench }} | tee output.txt

      # Download previous benchmark result from cache (if exists)
      - name: Download previous benchmark data
        uses: actions/cache@v3
        with:
          path: ./cache
          key: ${{ runner.os }}-benchmark

      # Run `github-action-benchmark` action
      - name: Store benchmark result
        uses: seanmonstar/github-action-benchmark@v1-patch-1
        with:
          name: ${{ matrix.bench }}
          # What benchmark tool the output.txt came from
          tool: 'cargo'
          # Where the output from the benchmark tool is stored
          output-file-path: output.txt
          # # Where the previous data file is stored
          # external-data-json-path: ./cache/benchmark-data.json
          # Workflow will fail when an alert happens
          fail-on-alert: true
          # GitHub API token to make a commit comment
          github-token: ${{ secrets.GITHUB_TOKEN }}
          # Enable alert commit comment
          comment-on-alert: true
          #alert-comment-cc-users: '@seanmonstar'
          auto-push: true

      # Upload the updated cache file for the next job by actions/cache

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

name: Benchmark
on:
  push:
    branches:
      - master
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  benchmark:
    timeout-minutes: 30
    name: Benchmark
    runs-on: latchkey-small
    strategy:
      matrix:
        bench:
          - end_to_end
          - pipeline
    steps:
      - uses: actions/checkout@v6
 
      - name: Install Rust
        uses: dtolnay/rust-toolchain@nightly
 
      # Run benchmark and stores the output to a file
      - name: Run benchmark
        run: cargo bench --features full --bench ${{ matrix.bench }} | tee output.txt
 
      # Download previous benchmark result from cache (if exists)
      - name: Download previous benchmark data
        uses: actions/cache@v3
        with:
          path: ./cache
          key: ${{ runner.os }}-benchmark
 
      # Run `github-action-benchmark` action
      - name: Store benchmark result
        uses: seanmonstar/github-action-benchmark@v1-patch-1
        with:
          name: ${{ matrix.bench }}
          # What benchmark tool the output.txt came from
          tool: 'cargo'
          # Where the output from the benchmark tool is stored
          output-file-path: output.txt
          # # Where the previous data file is stored
          # external-data-json-path: ./cache/benchmark-data.json
          # Workflow will fail when an alert happens
          fail-on-alert: true
          # GitHub API token to make a commit comment
          github-token: ${{ secrets.GITHUB_TOKEN }}
          # Enable alert commit comment
          comment-on-alert: true
          #alert-comment-cc-users: '@seanmonstar'
          auto-push: true
 
      # Upload the updated cache file for the next job by actions/cache
 

What changed

2 third-party actions are referenced by a movable tag. Pin them to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.

This workflow runs 1 job (2 with the matrix expanded) per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow