| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
We are getting odd failures on 2.7 with some of your PRs now. Not sure if it is "you" or "us"... This change seems fine to me. |
Sorry, something went wrong.
|
Yeah, I've noticed failures from this specific test (which seems unrelated)... |
Sorry, something went wrong.
Speeds up setting up of subplots by ~3% and their drawing by ~2% at a
reasonably limited cost in legibility.
The difference is actually not easy to observe because variation in
timings are much greater than 3% from run to run.
In a call like `subplots(10, 10)`, just setting up the figure calls
`np.identity(3)` 1801 times and actually drawing the figure another 1705
times (measured by manually instrumenting the calls to identity() in the
old version. At the same time,
```
%timeit np.identity(3)
```
and
```
%%timeit t = np.identity(3)
t.copy()
```
show that on my machine, a call to np.identity(3) is approximately 16us
slower than copying a preexisting matrix; multiplying this by 1801 shows
that the calls to identity correspond to an excess time of ~27ms.
Finally, setting up the axes and drawing it can be timed using
```
from time import perf_counter
import matplotlib; matplotlib.use("agg")
from matplotlib import pyplot as plt
N = 10
# First draw always seems slower, so skip it.
figure = plt.figure()
figure.subplots(N, N)
figure.canvas.draw()
plt.close("all")
for _ in range(5):
figure = plt.figure()
start = perf_counter()
figure.subplots(N, N)
print("{: 4}".format(int(1000 * (perf_counter() - start))), end=" ")
start = perf_counter()
figure.canvas.draw()
print("{: 4}".format(int(1000 * (perf_counter() - start))))
plt.close("all")
```
which shows that (on my machine) setting up the subplots takes ~850ms
and drawing them ~1300ms (but again, with a lot of jitter).
Hence, the gain from the patch should be ~3% for the setup and ~2% for
the draw.
There was a problem hiding this comment.
👍 nice! Feel free to merge once the 2.7 travis build passes
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
EDIT: see below.
Speeds up setting up of subplots by ~3% and their drawing by ~2% at a
reasonably limited cost in legibility.
The difference is actually not easy to observe because variation in
timings are much greater than 3% from run to run.
In a call like subplots(10, 10), just setting up the figure calls
np.identity(3) 1801 times and actually drawing the figure another 1705
times (measured by manually instrumenting the calls to identity() in the
old version. At the same time,
and
show that on my machine, a call to np.identity(3) is approximately 16us
slower than copying a preexisting matrix; multiplying this by 1801 shows
that the calls to identity correspond to an excess time of ~27ms.
Finally, setting up the axes and drawing it can be timed using
from time import perf_counter import matplotlib; matplotlib.use("agg") from matplotlib import pyplot as plt N = 10 # First draw always seems slower, so skip it. figure = plt.figure() figure.subplots(N, N) figure.canvas.draw() plt.close("all") for _ in range(5): figure = plt.figure() start = perf_counter() figure.subplots(N, N) print("{: 4}".format(int(1000 * (perf_counter() - start))), end=" ") start = perf_counter() figure.canvas.draw() print("{: 4}".format(int(1000 * (perf_counter() - start)))) plt.close("all")which shows that (on my machine) setting up the subplots takes ~850ms
and drawing them ~1300ms (but again, with a lot of jitter).
Hence, the gain from the patch should be ~3% for the setup and ~2% for
the draw.
Edit: I realized that my timings were invalid because I had https://pypi.org/project/ipython-autoimport/ active which, while reasonably fast, still messed up the timings a bit.
The real gain is probably ~5x less than what advertised above, so ~0.5%. Feel free to close if you think this is not worth it.
PR Summary
PR Checklist