Skip to content

Performance improvements #218

Performance improvements

Performance improvements #218

Workflow file for this run

name: Benchmark pull request
on: [pull_request]
permissions:
pull-requests: write
jobs:
Metatheory_vs_egg:
runs-on: ubuntu-latest
steps:
- uses: dtolnay/rust-toolchain@stable
name: Setup rust toolchain
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: "1.11.0-beta1"
- name: Clone egg-benchmark repo
run: git clone https://github.com/nmheim/egg-benchmark.git egg-benchmark
- name: Instantiate julia benchmark dependencies
env:
JULIA_NUM_THREADS: 2
run: |
# Lightweight build step, as sometimes the runner runs out of memory:
julia --project=./egg-benchmark/scripts \
-e 'ENV["JULIA_PKG_PRECOMPILE_AUTO"]=0; import Pkg; Pkg.instantiate()'
- name: Add ~/.julia/bin to PATH
run: |
echo "$HOME/.julia/bin" >> $GITHUB_PATH
- name: Run egg benchmarks
run: |
cd ./egg-benchmark
cargo bench
# cargo bench -- "basic_maths/simpl1"
cd ../
- name: Run Metatheory benchmarks
run: |
echo $PATH
ls -l ~/.julia/bin
mkdir results
benchpkg Metatheory \
--rev="${{github.event.pull_request.base.sha}},${{github.event.pull_request.head.sha}}" \
--url=${{ github.event.repository.clone_url }} \
--bench-on="${{github.event.pull_request.head.sha}}" \
--output-dir=results/ --tune
# - name: Create plots from benchmarks
# run: |
# mkdir -p plots
# benchpkgplot Metatheory \
# --rev="${{github.event.repository.default_branch}},${{github.event.pull_request.head.sha}}" \
# --npart=10 --format=png --input-dir=results/ --output-dir=plots/
# - name: Upload plot as artifact
# uses: actions/upload-artifact@v4
# with:
# name: plots
# path: plots
- name: Create markdown table from benchmarks
run: |
julia --project=egg-benchmark/scripts egg-benchmark/scripts/load_results.jl \
-b ${{github.event.pull_request.head.sha}} -b "${{github.event.pull_request.base.sha}}" \
--mt-results=results/ \
--egg-results=egg-benchmark/target/criterion \
-o table.md
echo '### Benchmark Results' > body.md
echo '' >> body.md
echo '' >> body.md
cat table.md >> body.md
echo '' >> body.md
echo '' >> body.md
echo '### Benchmark Plots' >> body.md
echo 'A plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR.' >> body.md
echo 'Go to "Actions"->"Benchmark a pull request"->[the most recent run]->"Artifacts" (at the bottom).' >> body.md
- name: Find Comment
uses: peter-evans/find-comment@v3
id: fcbenchmark
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: "github-actions[bot]"
body-includes: Benchmark Results
- name: Comment on PR
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: ${{ steps.fcbenchmark.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body-path: body.md
edit-mode: replace