String concatenation has been optimized since 2.3, so using += should be fairly fast.
In my first test, I tried concatentating a 4096 byte string 1000 times in the following code, and the result was indeed very fast (12.352 ms on my machine). import time t = time.time() mydata = "" moredata = "A"*4096 for i in range(1000): mydata += moredata # 12.352 ms print "%0.3f ms"%(1000*(time.time() - t)) However, I got a different result in my second test, which is implemented in a class with a feed() method. This test took 4653.522 ms on my machine, which is 350x slower than the previous test! class StringConcatTest: def __init__(self): self.mydata = "" def feed(self, moredata): self.mydata += moredata # 4653.522 ms test = StringConcatTest() t = time.time() for i in range(1000): test.feed(moredata) print "%0.3f ms"%(1000*(time.time() - t)) Note that I need to do something to mydata INSIDE the loop, so please don't tell me to append moredata to a list and then use "".join after the loop. Why is the second test so much slower? -- http://mail.python.org/mailman/listinfo/python-list