Benchmarks #467
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: Benchmarks | |
on: | |
schedule: | |
# Run every day at midnight. | |
- cron: "0 0 * * *" | |
workflow_dispatch: | |
jobs: | |
benchmarks: | |
name: Run the benchmarks | |
runs-on: ubuntu-24.04 | |
timeout-minutes: 60 | |
env: | |
ESVU_PATH: ${{ github.workspace }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Checkout the data repository | |
uses: actions/checkout@v4 | |
with: | |
path: data | |
- name: Checkout the main Boa repository | |
uses: actions/checkout@v4 | |
with: | |
repository: boa-dev/boa | |
ref: main | |
path: boa | |
- name: Install the Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
- name: Cache cargo | |
uses: actions/cache@v4 | |
with: | |
path: | | |
boa/target | |
~/.cargo/git | |
~/.cargo/registry | |
key: ${{ runner.os }}-cargo-benchmarks-${{ hashFiles('**/Cargo.lock') }} | |
- uses: actions/setup-node@v4 | |
- name: Install esvu | |
run: | | |
npm i -g github:CanadaHonk/esvu | |
- name: Benchmarking duktape | |
run: | | |
wget https://github.com/svaarala/duktape/releases/download/v2.7.0/duktape-2.7.0.tar.xz | |
tar xvfJ duktape-2.7.0.tar.xz | |
cd duktape-2.7.0 | |
make -f Makefile.cmdline | |
./duk ../data/bench/bench-v8/combined.js > ../data/bench/duktape_results.txt | |
- name: Benchmarking quickJS | |
run: | | |
esvu install quickjs | |
./bin/quickjs data/bench/bench-v8/combined.js > data/bench/quickjs_results.txt | |
- name: Benchmarking V8 --jitless | |
run: | | |
esvu install v8 | |
./bin/v8 --jitless data/bench/bench-v8/combined.js > data/bench/v8-jitless_results.txt | |
- name: Benchmarking SpiderMonkey --jitless | |
run: | | |
esvu install jsshell | |
./bin/sm --no-jit-backend data/bench/bench-v8/combined.js > data/bench/sm-jitless_results.txt | |
- name: Benchmarking Kiesel | |
run: | | |
wget -O ./bin/kiesel "https://files.kiesel.dev/kiesel-linux-$(uname -m)-releasefast" | |
chmod +x ./bin/kiesel | |
./bin/kiesel data/bench/bench-v8/combined.js > data/bench/kiesel_results.txt | |
- name: Benchmarking LibJS | |
run: | | |
esvu install libjs | |
./bin/ladybird-js data/bench/bench-v8/combined.js > data/bench/libjs_results.txt | |
- name: Benchmarking Boa | |
run: | | |
cd boa | |
cargo build --release --bin boa | |
cargo run --release --bin boa -- ../data/bench/bench-v8/combined.js > ../data/bench/boa_results.txt | |
- name: Collate Results | |
run: | | |
cd data | |
node bench/gather_results.mjs | |
- name: Commit files | |
run: | | |
cd data | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git add bench/results | |
git commit -m "Add new benchmark results" -a | |
- name: Push changes | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branch: ${{ github.ref }} | |
directory: data |