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