Lazier ticks for large speedup when creating large arrays of axes.#16067
Closed
anntzer wants to merge 1 commit intomatplotlib:mainfrom
Closed
Lazier ticks for large speedup when creating large arrays of axes.#16067anntzer wants to merge 1 commit intomatplotlib:mainfrom
anntzer wants to merge 1 commit intomatplotlib:mainfrom
Conversation
Be more careful to not create ticks earlier than needed, as that's quite
costly.
On the following benchmark
```
from matplotlib import pyplot as plt
from time import perf_counter
fig = plt.figure()
for i in range(3):
print(i)
start = perf_counter()
fig.subplots(10, 10)
print(perf_counter() - start) # creation time
start = perf_counter()
fig.clf()
print(perf_counter() - start) # clearance time
```
this speeds up axes creation from ~1.4s to ~0.5s and figure clearance(!)
from ~2.6s to ~0.3s.
Note that a similar idea was already implemented in c935965, which sped
up creation from ~2.6s to 0.8s and clearance from ~2.2s to ~1.8s, but
obviously the whole thing is brittle and got mostly lost at some
point...
|
Since this Pull Request has not been updated in 60 days, it has been marked "inactive." This does not mean that it will be closed, though it may be moved to a "Draft" state. This helps maintainers prioritize their reviewing efforts. You can pick the PR back up anytime - please ping us if you need a review or guidance to move the PR forward! If you do not plan on continuing the work, please let us know so that we can either find someone to take the PR over, or close it. |
Member
|
I'm closing this as it is unclear whether there's actually a speedup. Instead I think we should go into the direction of moving from individual ticks to TickCollections #5665. Note #5665 (comment) for a possible migration strategy. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Be more careful to not create ticks earlier than needed, as that's quite
costly.
On the following benchmark
this speeds up axes creation from ~1.4s to ~0.5s and figure clearance(!)
from ~2.6s to ~0.3s.
Note that a similar idea was already implemented in c935965, which sped
up creation from ~2.6s to 0.8s and clearance from ~2.2s to ~1.8s, but
obviously the whole thing is brittle and got mostly lost at some
point...
Would be nice to track performance regressions (semi)automatically.
attn @timhoffm as you initially had this idea in #9727
(#16066 made this a bit more of a pain than expected)
edit: hmmm, looks like this just transfers the cost to draw time, will investigate more...
PR Summary
PR Checklist