In article <[EMAIL PROTECTED]>,
 John Salerno <[EMAIL PROTECTED]> wrote:

> My initial feeling is that concatenation might take longer than 
> substitution, but that it is also easier to read:
> 
> 
> def p(self, paragraph):
>      self.source += '<p>' + paragraph + '</p>\n\n'
> 
> vs.
> 
> def p(self, paragraph):
>      self.source += '<p>%s</p>\n\n' % paragraph
> 
> 
> 
> Is there a preference between these two ways?

One may be marginally faster, but they both require copying the source 
string, and are thus both O(n).  If you're just doing one or a small fixed 
number of these, it really doesn't matter.  Pick whichever one you think is 
easier to read.

On the other hand, if you're doing a lot of them (i.e. in a loop), the 
entire loop will now be O(n^2), which is a killer.  If that's the case, 
what you want to do is accumulate the individual substrings in a list, then 
join the list elements all at once:

parts = []
for paragraph in foo:
    parts.append ('<p>')
    parts.append (paragraph)
    parts.append ('<p>\n\n')
    # or maybe instead of that ...
    # parts += ['<p>', paragraph, '<p>\n\n']

self.source = "".join (parts)

This only requires a single copy, and thus you're back to being O(n), which 
beats the heck out of O(n^2).
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to