Skip to content
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

perf: remove @[specialize] from mkBinding #6019

Merged
merged 1 commit into from
Nov 15, 2024

Conversation

JovanGerb
Copy link
Contributor

@JovanGerb JovanGerb commented Nov 9, 2024

This PR removes @[specilize] from MkBinding.mkBinding, which is a function that cannot be specialized (as none of its arguments are functions). As a result, the specializable function Nat.foldRevM.loop doesn't get specialized, which leads to worse performing code.

As expected, the mathlib bench shows a very small improvement. About 95% of files show a speedup. (http://speed.lean-fro.org/mathlib4/compare/e7b27246-a3e6-496a-b552-ff4b45c7236e/to/6033df75-aa53-44d9-819d-51f93fc05e94?hash1=b28f0d7f7e9cc3949a9a3556a6b36513f37f690d)

@github-actions github-actions bot added the toolchain-available A toolchain is available for this PR, at leanprover/lean4-pr-releases:pr-release-NNNN label Nov 9, 2024
leanprover-community-mathlib4-bot added a commit to leanprover-community/batteries that referenced this pull request Nov 9, 2024
leanprover-community-mathlib4-bot added a commit to leanprover-community/mathlib4 that referenced this pull request Nov 9, 2024
@JovanGerb JovanGerb marked this pull request as draft November 9, 2024 22:18
@leanprover-community-bot leanprover-community-bot added the builds-mathlib CI has verified that Mathlib builds against this PR label Nov 9, 2024
@JovanGerb JovanGerb marked this pull request as ready for review November 9, 2024 22:51
@Kha
Copy link
Member

Kha commented Nov 15, 2024

!bench

@nomeata
Copy link
Collaborator

nomeata commented Nov 15, 2024

As expected, the mathlib bench shows a very small improvement. About 95% of files show a speedup.

Would you mind including the link to the speed center report, for posterity?

@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit cd2ca0a.
There were significant changes against commit c779f3a:

  Benchmark             Metric          Change
  =====================================================
- bv_decide_mul         branch-misses     2.5% (10.1 σ)
- bv_decide_realworld   branch-misses     1.2% (16.5 σ)

@JovanGerb
Copy link
Contributor Author

I'm surprised by the improvement:

stdlib | instructions |   | -90,535 σ | 6,069 bln. | -6,722 mld. -0,111 % | 6,063 bln.

@Kha Kha added this pull request to the merge queue Nov 15, 2024
Merged via the queue into leanprover:master with commit f06fc30 Nov 15, 2024
24 checks passed
@JovanGerb JovanGerb deleted the removeAtSpecilize branch November 16, 2024 00:41
@kim-em kim-em added the changelog-language Language features, tactics, and metaprograms label Jan 4, 2025
JovanGerb added a commit to JovanGerb/lean4 that referenced this pull request Jan 21, 2025
This PR removes @[specilize] from `MkBinding.mkBinding`, which is a
function that cannot be specialized (as none of its arguments are
functions). As a result, the specializable function `Nat.foldRevM.loop`
doesn't get specialized, which leads to worse performing code.

As expected, the mathlib bench shows a very small improvement. About 95%
of files show a speedup.
(http://speed.lean-fro.org/mathlib4/compare/e7b27246-a3e6-496a-b552-ff4b45c7236e/to/6033df75-aa53-44d9-819d-51f93fc05e94?hash1=b28f0d7f7e9cc3949a9a3556a6b36513f37f690d)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
builds-mathlib CI has verified that Mathlib builds against this PR changelog-language Language features, tactics, and metaprograms toolchain-available A toolchain is available for this PR, at leanprover/lean4-pr-releases:pr-release-NNNN
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants