This PR speeds up some benchmarks when run as tests by lowering their workload. It also stops testing some of the more expensive benchmarks that can't be easily made smaller.
25 lines
702 B
Text
25 lines
702 B
Text
module
|
|
import Lean
|
|
meta import Lean.Data.FuzzyMatching
|
|
open Lean Elab
|
|
|
|
def TURNS : Nat := 20
|
|
|
|
def bench (pattern : String) : TermElabM Unit := do
|
|
let env ← getEnv
|
|
-- IO.println s!"{env.constants.size} decls"
|
|
let list := env.constants.toList |>.map fun (n, _) => n.toString
|
|
let bench := (← IO.getEnv "TEST_BENCH") == some "1"
|
|
let turns := if bench then TURNS else 1
|
|
IO.println s!"Matching {list.length * turns} decls"
|
|
for _ in 0...turns do
|
|
let mut n := 0
|
|
for name in list do
|
|
if pattern.charactersIn name then n := n + 1
|
|
IO.println s!"{n} matches"
|
|
|
|
set_option profiler true
|
|
#eval! bench "L"
|
|
#eval! bench "Lean."
|
|
#eval! bench "Lean.Expr"
|
|
#eval! bench "Lean.Expr.const"
|