-
Notifications
You must be signed in to change notification settings - Fork 450
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: lake: use StateRefT
for BuildStore
#6290
Conversation
Mathlib CI status (docs):
|
!bench |
Here are the benchmark results for commit 79d8c56. |
79d8c56
to
66d2c0b
Compare
!bench |
Here are the benchmark results for commit 66d2c0b. |
!bench |
Here are the benchmark results for commit 66d2c0b. |
Here are the benchmark results for commit 66d2c0b. |
Here are the benchmark results for commit 66d2c0b. |
!bench |
Here are the benchmark results for commit 66d2c0b. |
Here are the benchmark results for commit 66d2c0b. |
Here are the benchmark results for commit 66d2c0b. Benchmark Metric Change
===================================================
+ big_do task-clock -3.0% (-12.9 σ)
+ big_do wall-clock -3.0% (-12.6 σ)
+ liasolver task-clock -2.8% (-21.2 σ)
+ liasolver wall-clock -2.9% (-12.9 σ)
+ rbmap_1 task-clock -4.3% (-13.4 σ)
+ rbmap_1 wall-clock -4.3% (-13.5 σ)
- stdlib instantiate metavars 4.8% (30.4 σ) |
This PR uses `StateRefT` instead of `StateT` to equip the Lake build monad with a build store. As a IO reference, different threads may now contend with the build store. However, benchmark results indicate that this does not have a significant performance impact. On a synchronization front, the lack of a mutex should not be a concern because the build store is a memorization data structure and thus order is theoretically irrelevant.
This PR uses `StateRefT` instead of `StateT` to equip the Lake build monad with a build store. As a IO reference, different threads may now contend with the build store. However, benchmark results indicate that this does not have a significant performance impact. On a synchronization front, the lack of a mutex should not be a concern because the build store is a memorization data structure and thus order is theoretically irrelevant.
This PR uses
StateRefT
instead ofStateT
to equip the Lake build monad with a build store.As a IO reference, different threads may now contend with the build store. However, benchmark results indicate that this does not have a significant performance impact. On a synchronization front, the lack of a mutex should not be a concern because the build store is a memorization data structure and thus order is theoretically irrelevant.