Merge pull request #42 from bombshell-dev/refactor-alignment #141
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Benchmark | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| # `workflow_dispatch` allows CodSpeed to trigger | |
| workflow_dispatch: | |
| permissions: {} | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read # clone repo | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| with: | |
| submodules: true | |
| persist-credentials: false | |
| - name: Setup Deno | |
| uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4 | |
| with: | |
| deno-version: v2.x | |
| - name: Cache WASM | |
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| id: wasm-cache | |
| with: | |
| path: | | |
| clayterm.wasm | |
| wasm.ts | |
| key: wasm-${{ hashFiles('Makefile', 'src/**', 'tasks/bundle-wasm.ts') }} | |
| - name: Build WASM | |
| if: steps.wasm-cache.outputs.cache-hit != 'true' | |
| run: make | |
| - name: Cache dependencies | |
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| id: deno-cache | |
| with: | |
| path: node_modules | |
| key: deno-${{ hashFiles('deno.lock') }} | |
| - name: Install dependencies | |
| if: steps.deno-cache.outputs.cache-hit != 'true' | |
| run: deno install | |
| - name: Upload build artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: bench-build | |
| retention-days: 1 | |
| path: wasm.ts | |
| simulation: | |
| name: Run benchmarks (simulation) | |
| needs: build | |
| runs-on: codspeed-macro | |
| permissions: | |
| contents: read # clone repo | |
| id-token: write # upload benchmark results to codspeed | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - name: Setup Deno | |
| uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4 | |
| with: | |
| deno-version: v2.x | |
| - name: Setup Node | |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | |
| with: | |
| node-version: 24 | |
| - name: Download build artifact | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: bench-build | |
| - name: Restore dependencies | |
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| id: deno-cache | |
| with: | |
| path: node_modules | |
| key: deno-${{ hashFiles('deno.lock') }} | |
| - name: Install dependencies | |
| if: steps.deno-cache.outputs.cache-hit != 'true' | |
| run: deno install | |
| - name: Run benchmarks | |
| uses: CodSpeedHQ/action@9d332c4d90b43981c3e55ae8e38e68709996240f # v4.17.0 | |
| with: | |
| mode: simulation | |
| # IMPORTANT! deno task bench fails in CI due to incompatible V8 bindings | |
| run: node bench/mod.ts | |
| walltime: | |
| name: Run benchmarks (walltime) | |
| needs: build | |
| runs-on: codspeed-macro | |
| permissions: | |
| contents: read # clone repo | |
| id-token: write # upload benchmark results to codspeed | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - name: Setup Deno | |
| uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.4 | |
| with: | |
| deno-version: v2.x | |
| - name: Setup Node | |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | |
| with: | |
| node-version: 24 | |
| - name: Download build artifact | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: bench-build | |
| - name: Restore dependencies | |
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| id: deno-cache | |
| with: | |
| path: node_modules | |
| key: deno-codspeed-${{ runner.arch }}-${{ hashFiles('deno.lock') }} | |
| - name: Install dependencies | |
| if: steps.deno-cache.outputs.cache-hit != 'true' | |
| run: deno install | |
| - name: Run process startup benchmarks | |
| uses: CodSpeedHQ/action@9d332c4d90b43981c3e55ae8e38e68709996240f # v4.17.0 | |
| with: | |
| mode: walltime | |
| run: node bench/startup.bench.ts |