String concatenation

Pierre-Frédéric Caillaud peufeu at free.fr
Wed Jun 23 10:21:17 EDT 2004


	Let's try this :

def test_concat():
	s = ''
	for i in xrange( test_len ):
		s += str( i )
	return s

def test_join():
	s = []
	for i in xrange( test_len ):
		s.append( str( i ))
	return ''.join(s)

def test_join2():
	return ''.join( map( str, range( test_len ) ))

	Results, with and without psyco :


test_len =  1000
String concatenation (normal)   4.85290050507 ms.
[] append + join (normal)       4.27646517754 ms.
map + join (normal)     2.37970948219 ms.

String concatenation (psyco)    2.0838675499 ms.
[] append + join (psyco)        2.29129695892 ms.
map + join (psyco)      2.21130692959 ms.

test_len =  5000
String concatenation (normal)   40.3251230717 ms.
[] append + join (normal)       23.3911275864 ms.
map + join (normal)     13.844203949 ms.

String concatenation (psyco)    9.65108215809 ms.
[] append + join (psyco)        13.0564379692 ms.
map + join (psyco)      13.342962265 ms.

test_len =  10000
String concatenation (normal)   163.02690506 ms.
[] append + join (normal)       47.6168513298 ms.
map + join (normal)     28.5276055336 ms.

String concatenation (psyco)    19.6494650841 ms.
[] append + join (psyco)        26.637775898 ms.
map + join (psyco)      26.7823898792 ms.

test_len =  20000
String concatenation (normal)   4556.57429695 ms.
[] append + join (normal)       92.0199871063 ms.
map + join (normal)     56.7145824432 ms.

String concatenation (psyco)    42.247030735 ms.
[] append + join (psyco)        58.3201909065 ms.
map + join (psyco)      53.8239884377 ms.


	Conclusion :

	- join is faster but worth the annoyance only if you join 1000s of strings
	- map is useful
	- psyco makes join useless if you can use it (depends on which web  
framework you use)
	- python is really pretty fast even without psyco (it runs about one mips  
!)

	Note :

	Did I mention psyco has a special optimization for string concatenation ?







More information about the Python-list mailing list