ENCODINGS = ( 'ascii', 'latin1', 'cp1252', 'utf8', 'utf_16', ) LENGTHS = ('1', '10', '10**3', '10**5') def run_benchmark(bench): for encoding in ENCODINGS: for errors in ('strict', 'replace', 'ignore', 'backslashreplace'): bench.start_group('Encoding %s/%s' % (encoding, errors)) for length in LENGTHS: text1 = "a" text2 = text1 * 4 text2 += "\udc80" bench.timeit('text.encode(%r, %r)' % (encoding, errors), setup='text = %r * %s' % (text1, length), name='%r * %s' % (text1, length)) if errors != 'strict' and length != '1': bench.timeit('text.encode(%r, %r)' % (encoding, errors), setup='text = %r * (%s // 5)' % (text2, length), name='%r * (%s // 5)' % (text2, length))