50 lines
1.5 KiB
Markdown
50 lines
1.5 KiB
Markdown
# Stress Test for Lake
|
|
|
|
This folder generates a deeply nested import tree of Lean modules
|
|
that can then be used as a stress test of large Lake builds (e.g., Mathlib).
|
|
The modules lack any code.
|
|
This removes variations in Lean elaboration time as a confounding factor,
|
|
but also means this test cannot be used to profile features that depend on code size
|
|
(e.g., OLean hashing or a module system).
|
|
|
|
It also generates a test workspace with many requires to benchmark the cost
|
|
of importing a multi-package configuration.
|
|
|
|
## Usage
|
|
|
|
This folder is tested as part of Lean's speed center benchmarks,
|
|
but it can also be run manually like so:
|
|
|
|
```bash
|
|
lake run mkTree
|
|
lake -d=test/tree update
|
|
time lake -d=test/tree script run nop
|
|
lake run mkBuild
|
|
time lake build
|
|
```
|
|
|
|
These commands generate the mock packages and source files and then time a configuration import and a build.
|
|
|
|
## Variations
|
|
|
|
The source generation configuration is flexible:
|
|
|
|
```bash
|
|
lake run -Ktest=Test mkBuild 40 40
|
|
```
|
|
|
|
The `test` option is which subdirectory of the `Inundation` source directory to output library files.
|
|
The first number is the maximum dependency depth, and
|
|
the second number is the number of dependencies for each file.
|
|
|
|
```bash
|
|
lake run mkTree 10
|
|
```
|
|
|
|
The number is how many dependency configurations to generate.
|
|
|
|
The settings in each example are the default values.
|
|
|
|
## Credits
|
|
|
|
This test is a fork of Gabriel Ebner's [GitHub repository](https://github.com/gebner/inundation/tree/master). Thank him for the initial idea!
|