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