performance of Nested for loops

Discussion in 'Python' started by querypk@gmail.com, May 20, 2005.

1. Guest

Is there a better way to code nested for loops as far as performance is
concerned.

what better way can we write to improve the speed.
for example:
N=10000
for i in range(N):
for j in range(N):
do_job1
for j in range(N):
do_job2

, May 20, 2005

2. Charles KrugGuest

On 20 May 2005 15:35:10 -0700, <>
wrote:
> Is there a better way to code nested for loops as far as performance is
> concerned.
>
> what better way can we write to improve the speed.
> for example:
> N=10000
> for i in range(N):
> for j in range(N):
> do_job1
> for j in range(N):
> do_job2
>

What do you see when you profile the code?

Premature Optimization is the root of all manner of evil and all that
good stuff.

Charles Krug, May 20, 2005

3. Larry BatesGuest

You can use xrange(N) that way Python doesn't have
to build the 10000 item lists 20000 times. Other than
that one would need to know why you would call do_job1
and do_job2 10000 times each inside a 10000 iteration
loop. Most VERY large performance gains are due to
better algorithms not code optimization.

Larry Bates

wrote:
> Is there a better way to code nested for loops as far as performance is
> concerned.
>
> what better way can we write to improve the speed.
> for example:
> N=10000
> for i in range(N):
> for j in range(N):
> do_job1
> for j in range(N):
> do_job2
>

Larry Bates, May 21, 2005
4. Andrew DalkeGuest

querypk wrote:
> Is there a better way to code nested for loops as far as performance is
> concerned.
>
> what better way can we write to improve the speed.
> for example:
> N=10000
> for i in range(N):
> for j in range(N):
> do_job1
> for j in range(N):
> do_job2

For this case compute the range once

range_10000 = range(10000)
for i in range_10000:
for j in range_10000:
do_job1()
for j in range_10000:
do_job2()

Using xrange(10000) may be faster but you would need to test