Reduce function calls

Posted by Curious2learn on Stack Overflow See other posts from Stack Overflow or by Curious2learn
Published on 2010-05-01T23:12:36Z Indexed on 2010/05/01 23:17 UTC
Read the original article Hit count: 286

Filed under:
|

Hello,

I profiled my python program and found that the following function was taking too long to run. Perhaps, I can use a different algorithm and make it run faster. However, I have read that I can also possibly increase the speed by reducing function calls, especially when it gets called repeatedly within a loop. I am a python newbie and would like to learn how to do this and see how much faster it can get. Currently, the function is:

def potentialActualBuyers(setOfPeople,theCar,price):
count=0
for person in setOfPeople:
    if person.getUtility(theCar) >= price and person.periodCarPurchased==None:
        count += 1
return count

where setOfPeople is a list of person objects. I tried the following:

    def potentialActualBuyers(setOfPeople,theCar,price):
        count=0
        Utility=person.getUtility
        for person in setOfPeople:
           if Utility(theCar) >= price and person.periodCarPurchased==None:
               count += 1
        return count

This, however, gives me an error saying local variable 'person' referenced before assignment Any suggestions, how I can reduce function calls or any other changes that can make the code faster.

Again, I am a python newbie and even though I may possibly be able to use a better algorithm, it is still worthwhile learning the answer to the above question.

Thanks very much.

© Stack Overflow or respective owner

Related posts about python

Related posts about speed