How to make this faster

Helmut Jarausch jarausch at igpm.rwth-aachen.de
Fri Jul 5 10:28:36 EDT 2013


On Fri, 05 Jul 2013 14:41:23 +0100, Oscar Benjamin wrote:

> On 5 July 2013 11:53, Helmut Jarausch <jarausch at igpm.rwth-aachen.de> wrote:
>> I even tried to use dictionaries instead of Numpy arrays. This version is a bit
>> slower then the lists of lists version (7.2 seconds instead of 6 second) but still
>> much faster than the Numpy array solution.
> 
> When you switched to dictionaries did you take advantage of the
> sparseness by iterating over dictionary keys instead of indices? This
> is the kind of thing that I meant when I said that in Python it's
> often easier to implement a better algorithm than in C. What I mean is
> that if Grid is a dict so that Grid[(r, c)] is the entry at row r and
> column c (if it exists) then you can change a loop like:
> 
>     for r in range(9):
>         for c in range(9):
>             if Grid[r, c] > 0: continue
>             # do stuff
> 
> so that it looks like:
> 
>     for r, c in Grid:
>         # do stuff
> 
> If the grid is sparsely occupied then this could be a significant improvement.
> 
> 
> Oscar

This gives a big speedup. Now, the time is gone down to 1.73 seconds in comparison to
original 13 seconds or the 7 seconds for the first version above.

Many thanks,
it seems hard to optimize a Python program,
Helmut



More information about the Python-list mailing list