lean4-htt/tests/bench/build
Garmelon e14230c0f3
chore: import measure.py instead of calling it (#12962)
Thereby avoiding the overhead of one python interpreter per wrapped lean
call during the build benchmarks.
2026-03-18 10:23:32 +00:00
..
fake_root/bin
lakeprof_report_template.html
lakeprof_report_upload.py chore: improve how test suite interacts with stages (#12913) 2026-03-16 15:20:03 +00:00
lean_wrapper.py chore: import measure.py instead of calling it (#12962) 2026-03-18 10:23:32 +00:00
README.md
run_bench.sh chore: improve how test suite interacts with stages (#12913) 2026-03-16 15:20:03 +00:00

The build benchmark

This benchmark executes a complete build of the stage3 stdlib from stage2 and collects global and per-module metrics. This is different from most other benchmarks, which benchmark the stage the bench suite is being executed in.

The following metrics are collected by a wrapper around the entire build process:

  • build//cycles
  • build//instructions
  • build//maxrss
  • build//task-clock
  • build//wall-clock

The following metrics are collected from leanc --profile and leanc --stat and summed across all modules:

  • build/profile/<name>//wall-clock
  • build/stat/<name>//amount
  • build/stat/<name>//bytes

The following metrics are collected from lakeprof report:

  • build/lakeprof/longest build path//wall-clock
  • build/lakeprof/longest rebuild path//wall-clock

The following metrics are collected individually for each module:

  • build/module/<name>//lines
  • build/module/<name>//cycles
  • build/module/<name>//instructions
  • build/module/<name>//bytes .ilean
  • build/module/<name>//bytes .olean
  • build/module/<name>//bytes .olean.server
  • build/module/<name>//bytes .olean.private

If the file build_upload_lakeprof_report is present in the repo root, the lakeprof report will be uploaded once the benchmark run concludes.