lean4-htt/tests
Henrik Böving b21cef37e4
perf: sort before elim dead branches (#11366)
This PR sorts the declarations fed into ElimDeadBranches in increasing
size. This can improve performance when we are dealing with a lot of
iterations.

The motivation for this change is as follows. Currently the algorithm
for doing one step of abstract interpretation is:
```
for decl in scc do
  interpDecl
  if summaryChanged decl then
    return true
return false
```
whenever we return true we run another step. Now suppose we are in a
situation where we have an SCC with one big decl in the front and then
`n` small ones afterwards. For each time that the small ones change
their summary, we will re-run analysis of the big one in the front.
Currently the ordering is basically at "random" based on how other
compilers inject things into the SCC. This change ensures the behavior
is consistent and at least somewhat intelligent. By putting the small
declarations first, whenever we trigger a rerun of the loop we bias
analyzing the small declarations first, thus decreasing run time.

Note that this change does not have much effect on the current pipeline
because: We usually construct the SCCs in a way such that small ones
happen to be in front anyways. However, with upcomping changes on
specialization this is about to change.
2025-11-27 22:21:06 +00:00
..
bench chore: add radar-based bench suite for stdlib (#11264) 2025-11-25 12:59:30 +00:00
bench-radar chore: add radar-based bench suite for stdlib (#11264) 2025-11-25 12:59:30 +00:00
compiler chore: rename String.ValidPos to String.Pos (#11240) 2025-11-24 16:40:21 +00:00
elabissues
ir
lake chore: lake: update tests/toml (#11314) 2025-11-22 04:41:58 +00:00
lean perf: sort before elim dead branches (#11366) 2025-11-27 22:21:06 +00:00
pkg feat: improve error message in the case of type class synthesis failure (#11245) 2025-11-21 21:24:27 +00:00
playground
plugin
simpperf
.gitignore
common.sh chore: make workspaceSymbol benchmarks modules (#11094) 2025-11-05 18:40:39 +00:00
lakefile.toml
lean-toolchain