[Tutor] optimization: faster than for
Kent Johnson
kent37 at tds.net
Sun Jul 1 14:01:21 CEST 2007
elis aeris wrote:
> x = 0
> y = 0
> for x in xrange(1,1024,1):
> for y in xrange(1,768,1):
> rgb = image.getpixel((10, 12))
>
>
>
> Luke said there is a faster way to do image.getpixel((10, 12))
>
> so i am still waiting on that,
>
> the above has been improved many times and it's a lot faster than while,
> I am trying to find out if there are any more new ways.
The problem is, you are making a very fast loop to do nothing. Your real
code will have to do something and it will have different bottlenecks
and different opportunities for optimization than this loop. Really what
you are doing now is finding the fastest way to write loop code.
One think that will help though is to make all the variables used in the
loop be local. Try this:
x = 0
y = 0
xrange_ = xrange
i_getpixel = image.getpixel
for x in xrange_(1,1024,1):
for y in xrange_(1,768,1):
rgb = i_getpixel((10, 12))
Here is a recipe that will do this kind of optimizations automatically:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/277940
You can also try optimizing your code with psyco, if you are running on
an Intel box, or use pyrex or ShedSkin to compile part of your code to
an extension module.
Kent
More information about the Tutor
mailing list