Skip to content

[Merged by Bors] - perf(MeasureTheory/Function/LpSpace.lean): speed up#21179

Closed
grunweg wants to merge 4 commits intomasterfrom
MR-speed-up-lpspace
Closed

[Merged by Bors] - perf(MeasureTheory/Function/LpSpace.lean): speed up#21179
grunweg wants to merge 4 commits intomasterfrom
MR-speed-up-lpspace

Conversation

@grunweg
Copy link
Copy Markdown
Contributor

@grunweg grunweg commented Jan 28, 2025

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).

Open in Gitpod

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.
@grunweg grunweg added the awaiting-bench This PR needs to be benchmarked before merging label Jan 28, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 28, 2025

PR summary 0d57afbcfd

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

No 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 script/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@github-actions github-actions bot added the t-measure-probability Measure theory / Probability theory label Jan 28, 2025
@grunweg
Copy link
Copy Markdown
Contributor Author

grunweg commented Jan 28, 2025

!bench

@leanprover-bot
Copy link
Copy Markdown
Collaborator

Here are the benchmark results for commit 9e43cdf.
There were significant changes against commit 3228d1d:

  Benchmark                                 Metric         Change
  ===============================================================
+ ~Mathlib.MeasureTheory.Function.LpSpace   instructions   -17.2%

@github-actions
Copy link
Copy Markdown

File Instructions %
build -45.49⬝10⁹ (-0.02%)
Mathlib.MeasureTheory.Function.LpSpace -38.581⬝10⁹ (-17.19%)
CI run

@sgouezel
Copy link
Copy Markdown
Contributor

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.

@grunweg
Copy link
Copy Markdown
Contributor Author

grunweg commented Jan 28, 2025

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.)

@sgouezel
Copy link
Copy Markdown
Contributor

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.

@grunweg
Copy link
Copy Markdown
Contributor Author

grunweg commented Jan 28, 2025

I see what you mean. I'm unsure if this is the best trade-off; I've asked on zulip.

@grunweg grunweg removed the awaiting-bench This PR needs to be benchmarked before merging label Jan 28, 2025
@grunweg
Copy link
Copy Markdown
Contributor Author

grunweg commented Jan 30, 2025

@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?

@sgouezel
Copy link
Copy Markdown
Contributor

Definitely, yes.
bors r+
Thanks!

@ghost ghost added the ready-to-merge This PR has been sent to bors. label Jan 31, 2025
mathlib-bors bot pushed a commit that referenced this pull request Jan 31, 2025
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>
@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors bot commented Jan 31, 2025

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors bot changed the title perf(MeasureTheory/Function/LpSpace.lean): speed up [Merged by Bors] - perf(MeasureTheory/Function/LpSpace.lean): speed up Jan 31, 2025
@mathlib-bors mathlib-bors bot closed this Jan 31, 2025
@mathlib-bors mathlib-bors bot deleted the MR-speed-up-lpspace branch January 31, 2025 13:11
Julian added a commit that referenced this pull request Feb 2, 2025
* 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)
  ...
jt496 pushed a commit that referenced this pull request Feb 3, 2025
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge This PR has been sent to bors. t-measure-probability Measure theory / Probability theory

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants