[Merged by Bors] - perf(MeasureTheory/Function/LpSpace.lean): speed up#21179
[Merged by Bors] - perf(MeasureTheory/Function/LpSpace.lean): speed up#21179
Conversation
Squeeze a few particularly slow simps, and add a comment about them. Remove two slightly slow convert's; simpa resp. exact also works and is in fact faster.
PR summary 0d57afbcfdImport changes for modified filesNo significant changes to the import graph Import changes for all files
Declarations diffNo declarations were harmed in the making of this PR! 🐙 You can run this locally as follows## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>
## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>The doc-module for No changes to technical debt.You can run this locally as
|
|
!bench |
|
Here are the benchmark results for commit 9e43cdf. Benchmark Metric Change
===============================================================
+ ~Mathlib.MeasureTheory.Function.LpSpace instructions -17.2% |
|
|
I think it's a good idea to squeeze slow simps for performance reasons, but I wouldn't indicate the performance gains, because it hurts a little bit the mathematical readability. |
|
Sure - so you'd prefer me to remove the timing information? (I think it's good to leave a comment that this was squeezed deliberately.) |
|
No, I'd remove all the comments: they don't bring anything mathematically, and the reader can see that the simp has been squeezed, so he can guess it's for performance. |
|
I see what you mean. I'm unsure if this is the best trade-off; I've asked on zulip. |
|
@sgouezel Since Kim on zulip was in favour of comments, I have kept them (but remove all timing information). Is this something you can live with? |
|
Definitely, yes. |
Squeeze a few particularly slow simps, and add a comment about them. Remove two slightly slow convert's; simpa resp. exact also works and is in fact faster. Co-authored-by: grunweg <rothgami@math.hu-berlin.de>
|
Pull request successfully merged into master. Build succeeded: |
* factorial-dvd-int: (143 commits) Apply suggestions from code review feat(Factorial): k! divides the product of any k successive integers feat(CategoryTheory): creation of finite limits (#21320) chore: update Mathlib dependencies 2025-02-01 (#21328) chore(GroupTheory/SpecificGroups/Alternating.lean): follow last minute review of JX (#21314) feat: `‖x‖ₑ.toNNReal = ‖x‖₊` (#21306) chore: cleanup imports in Archive/IfNormalization (#21318) doc: fix several typos (#21315) feat(CategoryTheory): transfer being iso along an iso in the arrow category (#21310) chore: delete declarations deprecated between 2024-01 and 2024-07 (#21271) feat(Analysis/Normed/Module/Dual): polar in a normed space as a submodule (#20084) chore(Data/ZMod/Basic): split `ZMod.valMinAbs` off (#21308) feat(GroupTheory/Perm/Centralizer): study the centralizer of a permutation (#17522) feat(RingTheory/LocalRing): `IsLocalRing` for subrings (#21168) chore: update Mathlib dependencies 2025-02-01 (#21312) chore: update Mathlib dependencies 2025-01-31 (#21311) feat: generalize `mem_dite` to `Membership α β` (#21262) feat: Lemmas for some monomial orders (#16177) feat(CategoryTheory): the localized category is monoidal (#12728) feat: add function log⁺ (=positive part of the logarithm) and prove standard estimates (#21289) feat(RingTheory/WittVector): ring of Witt vectors is p-adically complete (#21295) feat(GroupTheory/GroupAction/Blocks): more on blocks (#21284) fix(FieldTheory/KrullTopology): make `krullTopology_discreteTopology_of_finiteDimensional` universe polymorphic (#21299) feat(RingTheory/Artinian): integral non-zero-divisors are units over artinian rings (#21199) refactor(Topology/Gluing): simplify definition of `TopCat.GlueData.Rel` (#20653) feat(RingTheory/PowerSeries): binomial series (#20192) chore(Mathlib/RingTheory/MvPolynomial): rename MonomiaOrder.lCoeff to MonomialOrder.leadingCoeff (#21290) chore (RingTheory/HahnSeries): fix names that use coeff (#21279) feat: let `notation3` distinguish `Prop` vs `Type _ ` vs `Sort _` (#21233) chore(MeasureTheory/Function/StronglyMeasurable): split Basic into Basic and AEStronglyMeasurable (#21273) feat(CategoryTheory): the monoidal category structure on a localization (#20951) feat(Analysis/Complex/Hadamard): generalize Hadamard's three lines theorem (#15009) feat(Order/CompleteBooleanAlgebra): Himp in terms of sSup (#20328) feat(ENNReal/Basic): add `ofNat_ne_top` and `top_ne_ofNat` (#14486) feat: Function.const as a PartialEquiv (#21137) chore(NonZeroDivisors): don't import rings (#20871) feat(Data/Set/Lattice): insert distributivity with iUnion/iInter (#21267) feat(GroupTheory/SpecificGroups/AlternatingGroup): subgroups of index 2 of Equiv.Perm (#21190) feat(GroupTheory/GroupAction/Transitive): basic results on transitive actions (#21285) perf(MeasureTheory/Function/LpSpace.lean): speed up (#21179) feat(Order): order isomorphisms from `Fin n` for small `n` (#21120) refactor(Topology/Group): turn morphisms in ProfiniteGrp into one field structures (#20740) feat: Sylow's first theorem for elementary `p`-groups (#21072) chore(Submonoid/Membership): don't import `MonoidWithZero` (#20748) refactor(Algebra/Algebra/Pi): cleanup and renaming (#21213) feat(GroupTheory/IndexNormal): subgroups of small index are normal (#21186) feat(Algebra/Group/Action): add definition of equidecomposition (#16936) feat(CategoryTheory/Subpresheaf): equalizer (#21096) feat: add lemmas about products of `Matrix.stdBasisMatrix` (#21204) chore: update Mathlib dependencies 2025-01-31 (#21282) ...
Squeeze a few particularly slow simps, and add a comment about them. Remove two slightly slow convert's; simpa resp. exact also works and is in fact faster. Co-authored-by: grunweg <rothgami@math.hu-berlin.de>
Squeeze a few particularly slow simps, and add a comment about them. Remove two slightly slow convert's; simpa resp. exact also works and is in fact faster.
This more than recovers the regression in #20806 (though I did not try hard to investigate the slow-down, but simply looked at the new file with the profiler).