Guido van Rossum added the comment:

I don't believe it either. I find join consistently faster than format:

python2.7 -m timeit -s 'x = [b"x"*1000']*10 'b"".join(x)'
1000000 loops, best of 3: 0.686 usec per loop

python2.7 -m timeit -s 'x = b"x"*1000'
'(b"{}{}{}{}{}{}{}{}{}{}").format(x, x, x, x, x, x, x, x, x, x)'
100000 loops, best of 3: 2.37 usec per loop

Try longer strings, same results (though less pronounced):

python2.7 -m timeit -s 'x = [b"x"*10000']*10 'b"".join(x)'
100000 loops, best of 3: 3.54 usec per loop

python2.7 -m timeit -s 'x = b"x"*10000'
'(b"{}{}{}{}{}{}{}{}{}{}").format(x, x, x, x, x, x, x, x, x, x)'
100000 loops, best of 3: 7.35 usec per loop

I'm guessing the advantage of format() is that it allows the
occasional formatting of a float or int.

And % is not significantly faster:

python2.7 -m timeit -s 'x = b"x"*1000' '(b"%s%s%s%s%s%s%s%s%s%s") %
(x, x, x, x, x, x, x, x, x, x)'
100000 loops, best of 3: 2.31 usec per loop

python2.7 -m timeit -s 'x = b"x"*10000' '(b"%s%s%s%s%s%s%s%s%s%s") %
(x, x, x, x, x, x, x, x, x, x)'
100000 loops, best of 3: 6.81 usec per loop

python2.7 -m timeit -s 'x = b"x"*100000' '(b"%s%s%s%s%s%s%s%s%s%s") %
(x, x, x, x, x, x, x, x, x, x)'
1000 loops, best of 3: 565 usec per loop

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue3982>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to