En Wed, 02 May 2007 12:16:56 -0300, Marc 'BlackJack' Rintsch  
<[EMAIL PROTECTED]> escribió:

> In <[EMAIL PROTECTED]>, jocknerd  
> wrote:
>
>> The biggest difference in my two apps is the C app uses linked lists.
>> I feel my Python app is doing too many lookups  which is causing the
>> bottleneck.
>
> Then replace those linear searches you wrote in Python with a dictionary.

As an example: using a Team object instead of a dictionary, and using  
teamlist (not a good name now) as a dictionary of Team objects indexed by  
name:

def lookupTeam (teamname):
        team = teamlist.get(teamname)
        if team is None:
                teamlist[teamname] = team = Team(teamname)
        return team

def updateTeamStats (tname1, score1, tname2, score2):
        team1 = lookupTeam (tname1)
        team2 = lookupTeam (tname2)

        team1.pf += score1
        team1.pa += score2
        if (score1 > score2):
                team1.won += 1
        elif (score1 < score2):
                team1.lost += 1
        else:
                team1.tied += 1

        team2.pf += score2
        team2.pa += score1
        if (score1 < score2):
                team2.won += 1
        elif (score1 > score2):
                team2.lost += 1
        else:
                team2.tied += 1

Then you should realize that those last two blocks are too similar, and  
you can make a function of it. And then you realize that in fact they act  
on a Team object, so you should make a Team method...

-- 
Gabriel Genellina
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to