On Wed, Apr 24, 2013 at 12:36 AM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: > # Using Python 3.3. > > py> from timeit import Timer > py> setup = "a = 'spam'; b = 'ham'; c = 'eggs'" > py> t1 = Timer("'%s, %s and %s for breakfast' % (a, b, c)", setup) > py> t2 = Timer("'{}, {} and {} for breakfast'.format(a, b, c)", setup) > py> print(min(t1.repeat())) > 0.8319804421626031 > py> print(min(t2.repeat())) > 1.2395259491167963 > > > Looks like the format method is about 50% slower.
Figures on my hardware are (naturally) different, with a similar (but slightly more pronounced) difference: >>> sys.version '3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) [MSC v.1600 32 bit (Intel)]' >>> print(min(t1.repeat())) 1.4841416995735415 >>> print(min(t2.repeat())) 2.5459869899666074 >>> t3 = Timer("a+', '+b+' and '+c+' for breakfast'", setup) >>> print(min(t3.repeat())) 1.5707538248576327 >>> t4 = Timer("''.join([a, ', ', b, ' and ', c, ' for breakfast'])", setup) >>> print(min(t4.repeat())) 1.5026834416105999 So on the face of it, format() is slower than everything else by a good margin... until you note that repeat() is doing one million iterations, so those figures are effectively in microseconds. Yeah, I think I can handle a couple of microseconds. ChrisA -- http://mail.python.org/mailman/listinfo/python-list