Oops that was the TKAgg profile results.  These are the WxAgg results
attached.  Sorry about that.

On 7/5/07, Tom Denniston <[EMAIL PROTECTED]> wrote:
I've been trying to profile and speed up an app that uses matplotlib.
I tried to write an example using simple pylab commands to reproduce
the slowness.  What I found was I could get a huge speedup just
avoiding unnecessary redraws.  I'm down now to passable behavior.
Plotting 6 series in two windows takes about one and a quarter
seconds.  I would like to improve this further, however, if it is
possible which is why I am posting.

The results with show() in between plots are:

In [5]: run u:/tdennist/test2.py
10.128132637

In [6]: run u:/tdennist/test2.py
10.3122053602

And without the superfluous draws:


In [7]: run u:/tdennist/test2.py
1.83904865901

In [8]: run u:/tdennist/test2.py
1.86751011294

In [9]: run u:/tdennist/test2.py
1.84959890227


Where 1.85 seconds is the time to do 2 iteractions of drawing 2 plots
with 3 lines each.  So about 0.9 to 1.0 sec to draw the plots once.

Is there anything obvious I can do to speed this up?  I looked a
profile results of this and found most of the time is spent in "draw"
functions.  I attached the profile results in kcachegrind format for
the faster method.

Under the animation section there is a suggestion that things are
faster if you pre allocate the line and then just update it's x or y
data.  Given the profile results, however, I don't think this would
help much and it would be kinda inconvenient for my app because I
don't know how many series I am gonna plot up front.

Also at the very bottom is the contents of my rc params.  I am using
WxAgg on windows with matplotlib 0.90.1 and python 2.5.



Code
-------


import timeit

setup='''
import matplotlib
matplotlib.use('WXAgg')
from matplotlib.widgets import Cursor
import pylab, numpy
pylab.clf()
#pylab.show()
'''
code='''
fig = pylab.gcf()
p1 = fig.add_axes([0.075, 0.05, 0.8, .4], axisbg='#333333')
cursor = Cursor(p1, useblit=True, color='green', linewidth=2.5 )
p2 = fig.add_axes([0.075, 0.55, 0.8, .4], axisbg='#333333')
def test(n):
   for i in range(3):
       p1.plot(numpy.random.rand(n))
       #pylab.show()

   for i in range(3):
       p2.plot(numpy.random.rand(n))
       #pylab.show()


test(1000)
pylab.show()
'''

print timeit.Timer(code, setup=setup).timeit(2)



rc Params
----------------

figure.subplot.right 0.9
mathtext.cal cmsy10.ttf
font.fantasy fantasy
xtick.minor.pad 3
tk.pythoninspect False
legend.labelsep 0.005
image.aspect equal
font.cursive cursive
figure.subplot.hspace 0.2
xtick.direction in
axes.facecolor w
ytick.direction in
legend.pad 0.2
axes.axisbelow False
lines.markersize 6
figure.dpi 80
text.usetex False
text.fontangle normal
patch.edgecolor k
ps.useafm False
lines.solid_joinstyle miter
font.monospace monospace
xtick.minor.size 2
figure.subplot.wspace 0.2
savefig.edgecolor w
text.fontvariant normal
image.cmap jet
axes.edgecolor k
tk.window_focus False
text.fontsize medium
font.serif serif
savefig.facecolor w
ytick.minor.size 2
mathtext.mathtext2 False
numerix numpy
font.stretch normal
text.dvipnghack False
ytick.color k
lines.linestyle -
xtick.color k
xtick.major.pad 3
text.fontweight normal
patch.facecolor b
figure.figsize (8, 6)
axes.linewidth 1.0
lines.linewidth 0.5
savefig.dpi 150
verbose.fileo sys.stdout
svg.image_noscale False
font.size 12.0
lines.antialiased True
polaraxes.grid True
toolbar toolbar2
pdf.compression 6
grid.linewidth 0.5
figure.facecolor 0.75
ps.usedistiller False
legend.isaxes True
figure.edgecolor w
mathtext.tt cmtt10.ttf
contour.negative_linestyle (6.0, 6.0)
image.interpolation bilinear
lines.markeredgewidth 0.5
legend.axespad 0.02
lines.marker None
lines.solid_capstyle projecting
axes.titlesize large
backend TkAgg
xtick.major.size 5
legend.fontsize small
legend.shadow False
mathtext.it cmmi10.ttf
font.variant normal
xtick.labelsize small
legend.handletextsep 0.02
ps.distiller.res 6000
patch.linewidth 0.5
lines.dash_capstyle butt
lines.color b
figure.subplot.top 0.9
legend.markerscale 0.6
patch.antialiased True
font.style normal
grid.linestyle :
axes.labelcolor k
text.color k
mathtext.rm cmr10.ttf
interactive True
savefig.orientation portait
svg.image_inline True
ytick.major.size 5
axes.grid False
plugins.directory .matplotlib_plugins
grid.color k
timezone UTC
ytick.major.pad 3
legend.handlelen 0.05
lines.dash_joinstyle miter
datapath 
c:\local\python25\lib\site-packages\matplotlib-0.87.7-py2.5-win32.egg\matplotlib\mpl-data
image.lut 256
figure.subplot.bottom 0.1
legend.numpoints 4
font.sans-serif sans-serif
font.family serif
axes.labelsize medium
ytick.minor.pad 3
axes.hold True
verbose.level silent
mathtext.nonascii cmex10.ttf
figure.subplot.left 0.125
text.fontstyle normal
font.weight normal
mathtext.mit cmmi10.ttf
ytick.labelsize small
ps.papersize letter
ima
ge.origin upper


Attachment: draw.kcachegrind.gz
Description: GNU Zip compressed data

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to