FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Lazier ticks for large speedup when creating large arrays of axes. by anntzer · Pull Request #16067 · matplotlib/matplotlib · GitHub

Repository navigation

Lazier ticks for large speedup when creating large arrays of axes. - #16067

Closed
anntzer wants to merge 1 commit into
matplotlib:mainfrom
anntzer:lazyticks
Closed

anntzer wants to merge 1 commit into
matplotlib:mainfrom
anntzer:lazyticks

Conversation

anntzer commented Jan 1, 2020 •
edited
Loading

Copy link
Copy Markdown
Contributor

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

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

  • Has Pytest style unit tests
  • Code is Flake 8 compliant
  • New features are documented, with examples if plot related
  • Documentation is sphinx and numpydoc compliant
  • Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
  • Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way

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

github-actions Bot commented Jul 5, 2023

Copy link
Copy Markdown

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.

github-actions Bot added the status: inactive Marked by the “Stale” Github Action label Jul 5, 2023

Copy link
Copy Markdown
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants


Back | FazBrowse Home | New Git URL