Skip to content

Benchmarks

Benchmarks #467

Workflow file for this run

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