Memory allocation in for loops
invitro81
invitro81 at gmx.net
Sun Feb 26 17:01:26 EST 2006
Which one is better w.r.t. memory allocation but also w.r.t. speed:
## 1.1 ##
def forloop(a,b):
for idx in range(a,b):
## ..
## do something
## ..
## 1.2 ##
def whileloop(a,b):
idx = a
while idx < b:
## ..
## do something
## ..
idx += 1
#########
I mean what I really would like is to have something C++ - like "for
(int idx = a; idx < b; i++) { .. }" where no internal vector or
something like that is allocated but only a few op's on registers are
performed; in the whileloop in python the picture is roughly the same
behind the scenes I guess.. but what about in the forloop? Is python
smart enough not to generate an internal vector as it does usually for
lists or do I have to apply some modifications (xrange..)? What happens
further if I do the following:
## 2.1 ##
def forloop(a,b,lst):
for idx in lst.sort():
## ..
## do something
## ..
#######
Is the sorting function called in every iteration just to detect that
(after the first sorting) it is useless comming back to the loop or does
this happen:
## 2.2 ##
def forloop(a,b,lst):
lst.sort()
for idx in lst:
## ..
## do something
## ..
#######
More information about the Python-list
mailing list