profiling

star 8.3k

Profile Lean programs with demangled names using samply and Firefox Profiler. Use when the user asks to profile a Lean binary or investigate performance.

leanprover By leanprover schedule Updated 3/1/2026

name: profiling description: Profile Lean programs with demangled names using samply and Firefox Profiler. Use when the user asks to profile a Lean binary or investigate performance. allowed-tools: Bash, Read, Glob, Grep

Profiling Lean Programs

Full documentation: script/PROFILER_README.md.

Quick Start

script/lean_profile.sh ./build/release/stage1/bin/lean some_file.lean

Requires samply (cargo install samply) and python3.

Agent Notes

  • The pipeline is interactive (serves to browser at the end). When running non-interactively, run the steps manually instead of using the wrapper script.
  • The three steps are: samply record --save-only, symbolicate_profile.py, then serve_profile.py.
  • lean_demangle.py works standalone as a stdin filter (like c++filt) for quick name lookups.
  • The --raw flag on lean_demangle.py gives exact demangled names without postprocessing (keeps ._redArg, ._lam_0 suffixes as-is).
  • Use PROFILE_KEEP=1 to keep the temp directory for later inspection.
  • The demangled profile is a standard Firefox Profiler JSON. Function names live in threads[i].stringArray, indexed by threads[i].funcTable.name.
Install via CLI
npx skills add https://github.com/leanprover/lean4 --skill profiling
Repository Details
star Stars 8,257
call_split Forks 875
navigation Branch main
article Path SKILL.md
More from Creator