I am getting very inconsistent timings when looking into plotting a line with a very large number of points. Axes.add_line() is very slow, and the time is taken by Axes._update_line_limits(). But when I simply run the latter, on a Line2D of the same dimensions, it can be fast.
import matplotlib matplotlib.use('template') import numpy as np import matplotlib.lines as mlines import matplotlib.pyplot as plt ax = plt.gca() LL = mlines.Line2D(np.arange(1.5e6), np.sin(np.arange(1.5e6))) from time import time t = time(); ax.add_line(LL); time()-t ###16.621543884277344 LL = mlines.Line2D(np.arange(1.5e6), np.sin(np.arange(1.5e6))) t = time(); ax.add_line(LL); time()-t ###16.579419136047363 ## We added two identical lines, each took 16 seconds. LL = mlines.Line2D(np.arange(1.5e6), np.sin(np.arange(1.5e6))) t = time(); ax._update_line_limits(LL); time()-t ###0.1733548641204834 ## But when we made another identical line, updating the limits was ## fast. # Below are similar experiments: LL = mlines.Line2D(np.arange(1.5e6), 2*np.sin(np.arange(1.5e6))) t = time(); ax._update_line_limits(LL); time()-t ###0.18362092971801758 ## with a fresh axes: plt.clf() ax = plt.gca() LL = mlines.Line2D(np.arange(1.5e6), 2*np.sin(np.arange(1.5e6))) t = time(); ax._update_line_limits(LL); time()-t ###0.22244811058044434 t = time(); ax.add_line(LL); time()-t ###16.724560976028442 What is going on? I used print statements inside add_line() to verify that all the time is in _update_line_limits(), which runs one or two orders of magnitude slower when run inside of add_line than when run outside--even if I run the preceding parts of add_line first. Eric ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel