Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
f7f842b
bench vs others
MauroToscano Feb 25, 2026
472ddc3
Standarize guest
MauroToscano Feb 25, 2026
88171d0
Fix decimals
MauroToscano Feb 25, 2026
ef7d5bb
Benchmark vs sp1
MauroToscano Feb 25, 2026
e11346a
Add lambda program
MauroToscano Feb 25, 2026
687d8d8
Remove stray blank line from .gitignore
MauroToscano Feb 25, 2026
0069659
Apply suggestion from @gabrielbosio
MauroToscano Mar 2, 2026
dabe54c
Add instruments
MauroToscano Mar 2, 2026
19e569e
Merge branch 'main' of github.com:yetanotherco/lambda_vm
MauroToscano Mar 2, 2026
3955884
Merge branch 'main' of github.com:yetanotherco/lambda_
MauroToscano Mar 4, 2026
15984c1
Merge branch 'main' into bench_vs
MauroToscano Mar 4, 2026
c2dca55
Merge branch 'bench_vs' of github.com:yetanotherco/lambda_vm into ben…
MauroToscano Mar 4, 2026
8d043eb
Merge branch 'main' into bench_vs
gabrielbosio Mar 5, 2026
4858ad8
Merge branch 'main' into bench_vs
MauroToscano Mar 5, 2026
5605c6b
Merge
MauroToscano Mar 28, 2026
af6aab3
Fix syscall number
MauroToscano Mar 28, 2026
a1169d9
Merge branch 'main' into bench_vs
jotabulacios Mar 31, 2026
687af82
Add runtime private inputs, nightly CI workflow, and 500M step projec…
jotabulacios Mar 31, 2026
5ea0c40
Merge branch 'main' into bench_vs
jotabulacios Mar 31, 2026
0315a80
save work
jotabulacios Apr 6, 2026
3f3c7ac
Fix bench_vs 5x projection inflation and add
jotabulacios Apr 7, 2026
1288f27
Merge branch 'main' into bench_vs
jotabulacios Apr 13, 2026
e9e9fbd
Switch bench_vs projection to measured cycles and add --cycles
jotabulacios Apr 14, 2026
1e1459e
Fix grep pipefail in
jotabulacios Apr 14, 2026
8d5c152
Merge branch 'main' into bench_vs
jotabulacios Apr 16, 2026
2e65d5a
Add bench_vs_plonky3
jotabulacios Apr 16, 2026
1fd1a58
lint
jotabulacios Apr 16, 2026
c9f9df9
Replace summary.md with metrics.txt in bench_vs_plonky3 and add README
jotabulacios Apr 16, 2026
ba4c7cd
remove line
jotabulacios Apr 16, 2026
f7fe4d3
add README
jotabulacios Apr 16, 2026
e72772b
Fix --no-p3-patch cleanup,
jotabulacios Apr 16, 2026
ffefff4
Add breakdown section to README and match nightly size in instruments…
jotabulacios Apr 16, 2026
e21518b
use fork
jotabulacios Apr 19, 2026
abaa0a2
use ssh for p3 fork
jotabulacios Apr 20, 2026
d3d41b0
rm old files
jotabulacios Apr 20, 2026
60bf9a4
Merge branch 'main' into bench_vs_p3
jotabulacios Apr 20, 2026
3010b38
adress comments
jotabulacios Apr 20, 2026
734ebdc
Merge branch 'main' into bench_vs_p3
jotabulacios Apr 20, 2026
4bcd877
Merge branch 'main' into bench_vs_p3
jotabulacios May 4, 2026
4b19d25
Migrate FibonacciPair AIR constraints
jotabulacios May 4, 2026
7ee4cbf
Add full metrics and phase breakdown to bench_vs_plonky3
jotabulacios May 4, 2026
6b57545
Add Lambda-vs-Plonky3 sections to the nightly Slack post
jotabulacios May 12, 2026
82db83b
Trim Lambda-vs-Plonky3 nightly to headline-only (drop size and column…
jotabulacios May 18, 2026
5f723f5
solve conflicts
jotabulacios May 18, 2026
c84a12c
fix bench
jotabulacios May 19, 2026
e9d5abb
Refresh Plonky3 to latest main
jotabulacios May 19, 2026
18f1f0c
cleanup
jotabulacios May 19, 2026
14a42df
Merge branch 'main' into bench_vs_p3_nightly_publish
jotabulacios May 19, 2026
bb7d8ba
address comments
jotabulacios May 20, 2026
cd41dd7
add missing file
jotabulacios May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 80 additions & 2 deletions .github/scripts/publish_bench_vs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ METRICS_FILE="bench_vs_artifacts/metrics.txt"
if [ ! -f "$METRICS_FILE" ]; then
curl -X POST "$WEBHOOK_URL" \
-H 'Content-Type: application/json; charset=utf-8' \
--data '{"blocks":[{"type":"header","text":{"type":"plain_text","text":"Lambda VM vs SP1 v6 - Nightly Benchmark"}},{"type":"section","text":{"type":"mrkdwn","text":":x: Benchmark failed - no metrics found. Check the workflow logs."}}]}'
--data '{"blocks":[{"type":"header","text":{"type":"plain_text","text":"Lambda VM Nightly Benchmark"}},{"type":"section","text":{"type":"mrkdwn","text":":x: Benchmark failed - no metrics found. Check the workflow logs."}}]}'
exit 0
fi

Expand Down Expand Up @@ -79,6 +79,84 @@ if [ -n "$LAMBDA_PROJECTED_H" ] || [ -n "$SP1_PROJECTED_H" ]; then
PROJ_SECTION=',{"type":"divider"},{"type":"header","text":{"type":"plain_text","text":"Linear Projection"}},{"type":"section","text":{"type":"mrkdwn","text":"'"$PROJ_MRKDWN"'"}}'
fi

# --- Plonky3 section (optional) --------------------------------------------
# Built when `bench_vs_artifacts/p3/headline/metrics.txt` exists.

p3_parse() {
local file=$1
local key=$2
{ grep "^${key}=" "$file" 2>/dev/null || true; } | cut -d= -f2-
}

p3_fmt_seconds() {
LC_NUMERIC=C awk -v s="$1" 'BEGIN {
if (s == "") { print "n/a"; exit }
if (s + 0 < 1) printf "%.0fms", s * 1000
else printf "%.3fs", s
}'
}

p3_fmt_mb() {
LC_NUMERIC=C awk -v b="$1" 'BEGIN {
if (b == "") { print "n/a"; exit }
printf "%.1f MB", b / (1024 * 1024)
}'
}

p3_fmt_gb() {
LC_NUMERIC=C awk -v kb="$1" 'BEGIN {
if (kb == "") { print "n/a"; exit }
printf "%.2f GB", kb / (1024 * 1024)
}'
}

p3_fmt_ratio_pair() {
LC_NUMERIC=C awk -v a="$1" -v b="$2" 'BEGIN {
if (a == "" || b == "" || b + 0 == 0) { print "n/a"; exit }
printf "%.2fx", a / b
}'
}

P3_SECTION=""
P3_FILE="bench_vs_artifacts/p3/metrics.txt"
if [ -f "$P3_FILE" ]; then
H_LOG_ROWS=$(p3_parse "$P3_FILE" "log_rows_series")
H_COLS=$(p3_parse "$P3_FILE" "columns")
H_BLOWUP=$(p3_parse "$P3_FILE" "blowup")
H_QUERIES=$(p3_parse "$P3_FILE" "fri_queries")
H_ROWS=$(p3_parse "$P3_FILE" "rows_series")
H_LAMBDA_PROVE=$(p3_parse "$P3_FILE" "lambda_prove_medians")
H_P3_PROVE=$(p3_parse "$P3_FILE" "p3_prove_medians")
H_LAMBDA_VERIFY=$(p3_parse "$P3_FILE" "lambda_verify_medians")
H_P3_VERIFY=$(p3_parse "$P3_FILE" "p3_verify_medians")
H_LAMBDA_PROOF=$(p3_parse "$P3_FILE" "lambda_proof_size_medians")
H_P3_PROOF=$(p3_parse "$P3_FILE" "p3_proof_size_medians")
H_LAMBDA_RSS=$(p3_parse "$P3_FILE" "lambda_peak_rss_medians")
H_P3_RSS=$(p3_parse "$P3_FILE" "p3_peak_rss_medians")
H_RATIO=$(p3_parse "$P3_FILE" "ratios_lambda_over_p3")

H_ROWS_FMT=$(LC_NUMERIC=C awk -v r="$H_ROWS" 'BEGIN {
if (r == "") { print "n/a"; exit }
if (r + 0 >= 1000000) printf "%.1fM", r / 1000000
else if (r + 0 >= 1000) printf "%.0fK", r / 1000
else printf "%d", r
}')

PROOF_RATIO=$(p3_fmt_ratio_pair "$H_LAMBDA_PROOF" "$H_P3_PROOF")
RSS_RATIO=$(p3_fmt_ratio_pair "$H_LAMBDA_RSS" "$H_P3_RSS")
PROVE_RATIO_FMT=$(LC_NUMERIC=C awk -v r="$H_RATIO" 'BEGIN {
if (r == "" || r == "n/a") { print "n/a"; exit }
printf "%.2fx", r
}')

P3_MRKDWN="*log_rows=${H_LOG_ROWS} (${H_ROWS_FMT} rows · ${H_COLS} cols · blowup=${H_BLOWUP} · ${H_QUERIES} queries)*"
P3_MRKDWN="${P3_MRKDWN}\\n*Lambda:* $(p3_fmt_seconds "$H_LAMBDA_PROVE") prove · $(p3_fmt_seconds "$H_LAMBDA_VERIFY") verify · $(p3_fmt_mb "$H_LAMBDA_PROOF") proof · $(p3_fmt_gb "$H_LAMBDA_RSS") RSS"
P3_MRKDWN="${P3_MRKDWN}\\n*Plonky3:* $(p3_fmt_seconds "$H_P3_PROVE") prove · $(p3_fmt_seconds "$H_P3_VERIFY") verify · $(p3_fmt_mb "$H_P3_PROOF") proof · $(p3_fmt_gb "$H_P3_RSS") RSS"
P3_MRKDWN="${P3_MRKDWN}\\n*Ratio L/P3:* ${PROVE_RATIO_FMT} prove · ${PROOF_RATIO} proof · ${RSS_RATIO} RSS"

P3_SECTION=',{"type":"divider"},{"type":"header","text":{"type":"plain_text","text":"Lambda VM vs Plonky3"}},{"type":"section","text":{"type":"mrkdwn","text":"'"$P3_MRKDWN"'"}}'
fi

ETHREX_METRICS_FILE="bench_vs_artifacts/ethrex_metrics.txt"
ETHREX_SECTION=""
if [ -f "$ETHREX_METRICS_FILE" ]; then
Expand All @@ -95,4 +173,4 @@ fi

curl -X POST "$WEBHOOK_URL" \
-H 'Content-Type: application/json; charset=utf-8' \
--data '{"blocks":[{"type":"header","text":{"type":"plain_text","text":"Lambda VM vs SP1 v6 - Nightly Benchmark"}},{"type":"context","elements":[{"type":"mrkdwn","text":"*Program:* Fibonacci · *Device:* CPU"}]},{"type":"divider"},{"type":"section","text":{"type":"mrkdwn","text":"'"$RESULTS_MRKDWN"'"}}'"$PROJ_SECTION$ETHREX_SECTION"']}'
--data '{"blocks":[{"type":"header","text":{"type":"plain_text","text":"Lambda VM Nightly Benchmark"}},{"type":"context","elements":[{"type":"mrkdwn","text":"*Program:* Fibonacci · *Device:* CPU"}]},{"type":"divider"},{"type":"header","text":{"type":"plain_text","text":"Lambda VM vs SP1 v6"}},{"type":"section","text":{"type":"mrkdwn","text":"'"$RESULTS_MRKDWN"'"}}'"$PROJ_SECTION$ETHREX_SECTION$P3_SECTION"']}'
14 changes: 14 additions & 0 deletions .github/workflows/bench-vs-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,20 @@ jobs:
--report-dir bench_vs_artifacts \
--no-color

- name: Refresh Plonky3 to latest main
run: |
cargo update --manifest-path bench_vs_plonky3/Cargo.toml \
-p p3-air -p p3-field -p p3-goldilocks -p p3-matrix \
-p p3-commit -p p3-challenger -p p3-symmetric \
-p p3-merkle-tree -p p3-keccak -p p3-fri \
-p p3-uni-stark -p p3-dft

- name: Run Plonky3 nightly benchmark
run: |
bash ./bench_vs_plonky3/run.sh \
--log-rows 21 --num-sequences 16 --runs 10 --scalar \
--report-dir bench_vs_artifacts/p3 --no-color

- name: Upload nightly benchmark artifact
uses: actions/upload-artifact@v4
with:
Expand Down
Loading
Loading