import timeit from itertools import imap, izip setup = [ ''' from itertools import imap, izip f = lambda seq, size: map ( seq.__getitem__, imap ( slice, xrange ( 0, len(seq), size ), xrange ( size, len(seq), size ) ) ) ''', ''' from itertools import imap, izip f = lambda seq, size: map ( ''.join, izip( *([iter(seq)]*size) ) ) ''', ''' f = lambda seq, size: [seq[i:i+size] for i in xrange(0, len(seq), size)] # yuxio, range -> xrange ''', ''' f = lambda seq, size: [seq[i:i+size] for i in range(0, len(seq), size)] # yuxio ''' ] stmt = lambda len_seq, size: 'g = f ( "{0}", {1} )'.format ( 'a'*len_seq, size ) for seq_len in [ 100, 1000, 10000 ]: for size in xrange ( 2, 10, 2 ): print map ( "{0:1.3f}".format, [ 100 * timeit.timeit ( stmt = stmt ( seq_len, size ), setup = _setup, number = 100000 / seq_len ) for _setup in setup ] ) for size in xrange ( 20, 100, 20 ): print map ( "{0:1.3f}".format, [ 100 * timeit.timeit ( stmt = stmt ( seq_len, size ), setup = _setup, number = 100000 / seq_len ) for _setup in setup ] )
Standard input is empty
['1.829', '1.544', '1.090', '1.166'] ['0.997', '1.202', '0.564', '0.598'] ['0.758', '1.045', '0.445', '0.469'] ['0.629', '1.004', '0.354', '0.371'] ['0.399', '0.989', '0.187', '0.201'] ['0.368', '0.989', '0.143', '0.157'] ['0.306', '1.036', '0.123', '0.132'] ['0.305', '1.271', '0.121', '0.136'] ['1.598', '1.258', '0.980', '1.049'] ['0.786', '0.920', '0.500', '0.537'] ['0.547', '0.825', '0.347', '0.371'] ['0.411', '0.783', '0.260', '0.277'] ['0.188', '0.714', '0.114', '0.122'] ['0.107', '0.701', '0.062', '0.068'] ['0.081', '0.687', '0.047', '0.051'] ['0.069', '0.701', '0.037', '0.041'] ['1.630', '1.238', '0.958', '1.041'] ['0.779', '1.008', '0.460', '0.495'] ['0.543', '0.896', '0.327', '0.352'] ['0.382', '0.815', '0.231', '0.250'] ['0.157', '0.739', '0.096', '0.108'] ['0.083', '0.647', '0.053', '0.057'] ['0.057', '0.637', '0.037', '0.039'] ['0.044', '0.632', '0.028', '0.030']