I need help speeding up an app that reads football scores and generates rankings
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Wed May 2 13:09:23 EDT 2007
En Wed, 02 May 2007 12:16:56 -0300, Marc 'BlackJack' Rintsch
<bj_666 at gmx.net> escribió:
> In <1178118022.865173.266300 at h2g2000hsg.googlegroups.com>, 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
More information about the Python-list
mailing list