On Wed, 29 Oct 2008 19:24:32 -0700, erikcw wrote:

> I'm trying to write a loop that will build a list of "template strings".
> 
> My current implementation is *really slow*.  It took 15 minutes to
> finish. (final len(list) was about 16k entries.)

What is `list` here?  Do you mean ``len(templates)``?

> templates = []
> for c in combinations:
>     if len(states):
>         for state in states:
>             if type(geo) is City:
>                 cities = state.city_set.all()
>             else:
>                 cities = geo
>             for city in cities:
>                 if type(city) is City:
>                     city = city.city
>                 templates.append(c.template.replace('{{ city }}',
> city))
>             templates.append(c.template) #just in case there are no
> cities
>             templates = [k.replace('{{ state }}',
> state.state).replace('{{ state_abbr }}', state.abbreviation) for k in
> templates]

It seems you are iterating over *all* accumulated templates so far, over 
and over again, even those which don't have those place holders anymore.  
Looks like the source of quadratic runtime for me.

Ciao,
        Marc 'BlackJack' Rintsch
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to