fix ci #2
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: | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| benchmark: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| shell: bash | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y build-essential cmake wget gpg ca-certificates | |
| sudo install -d -m 0755 /etc/apt/keyrings | |
| wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key \ | |
| | gpg --dearmor \ | |
| | sudo tee /etc/apt/keyrings/llvm.gpg >/dev/null | |
| echo "deb [signed-by=/etc/apt/keyrings/llvm.gpg] http://apt.llvm.org/noble/ llvm-toolchain-noble main" \ | |
| | sudo tee /etc/apt/sources.list.d/llvm.list >/dev/null | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| llvm-22 llvm-22-dev llvm-22-runtime \ | |
| clang-22 clang-tools-22 clangd-22 clang-tidy-22 clang-format-22 \ | |
| lld-22 lldb-22 \ | |
| libc++-22-dev libc++abi-22-dev \ | |
| libomp-22-dev | |
| wget https://github.com/sharkdp/hyperfine/releases/download/v1.20.0/hyperfine_1.20.0_amd64.deb | |
| sudo dpkg -i hyperfine_1.20.0_amd64.deb | |
| - name: Select LLVM 22 | |
| run: | | |
| echo "CC=clang-22" >> "$GITHUB_ENV" | |
| echo "CXX=clang++-22" >> "$GITHUB_ENV" | |
| echo "AR=llvm-ar-22" >> "$GITHUB_ENV" | |
| echo "NM=llvm-nm-22" >> "$GITHUB_ENV" | |
| echo "RANLIB=llvm-ranlib-22" >> "$GITHUB_ENV" | |
| echo "/usr/lib/llvm-22/bin" >> "$GITHUB_PATH" | |
| - name: Verify LLVM 22 | |
| run: | | |
| clang-22 --version | |
| llvm-config-22 --version | |
| - name: Build | |
| run: | | |
| cmake -S . -B build -DCMAKE_BUILD_TYPE=Release | |
| cmake --build build | |
| clang ./benchmark/bf.c -o build/simple_c -O3 | |
| - name: Run benchmarks | |
| run: | | |
| set -euo pipefail | |
| result_file="$(mktemp)" | |
| block_file="$(mktemp)" | |
| tmp_readme="$(mktemp)" | |
| trap 'rm -f "$result_file" "$block_file" "$tmp_readme"' EXIT | |
| hyperfine -w 1 -r 10 -N \ | |
| "./build/bfjit ./examples/hanoi.b.txt" \ | |
| "./build/simple_c ./examples/hanoi.b.txt" \ | |
| "bun ./benchmark/bf.js ./examples/hanoi.b.txt" \ | |
| | tee "$result_file" | |
| { | |
| printf '```text\n' | |
| cat "$result_file" | |
| printf '```\n' | |
| } > "$block_file" | |
| sed '/<!-- benchmark:start -->/,/<!-- benchmark:end -->/{//!d;}' README.md \ | |
| | sed "/<!-- benchmark:start -->/r $block_file" \ | |
| > "$tmp_readme" | |
| mv "$tmp_readme" README.md | |
| echo "Updated README benchmark block:" | |
| sed -n '/<!-- benchmark:start -->/,/<!-- benchmark:end -->/p' README.md |