Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Draft
anntzer wants to merge1 commit intomatplotlib:main
base:main
Choose a base branch
Loading
fromanntzer:lazyticks

Conversation

anntzer
Copy link
Contributor

@anntzeranntzer commentedJan 1, 2020
edited
Loading

Be more careful to not create ticks earlier than needed, as that's quite
costly.

On the following benchmark

from matplotlib import pyplot as pltfrom time import perf_counterfig = 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 inc935965, 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 isFlake 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 quitecostly.On the following benchmark```from matplotlib import pyplot as pltfrom time import perf_counterfig = 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 inc935965, which spedup creation from ~2.6s to 0.8s and clearance from ~2.2s to ~1.8s, butobviously the whole thing is brittle and got mostly lost at somepoint...
@github-actions
Copy link

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-actionsgithub-actionsbot added the status: inactiveMarked by the “Stale” Github Action labelJul 5, 2023
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers
No reviews
Assignees
No one assigned
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

1 participant
@anntzer

[8]ページ先頭

©2009-2025 Movatter.jp