import timeit, gc, sys size = 100000 repeats = 10 numbers = 100 gc.disable() def bench(a, b, c): for i in list(range(1, 11)) + [20, 50, 100, 1000, 10000]: string = (c * (i - 1) + a) * (size // i) string += c * (size - len(string)) gc.collect() best = min(timeit.Timer("text.replace(a, b)", "a=%r; b=%r; text=%r" % (a, b, string) ).repeat(repeats, numbers)) print('%.0f\t%d %a %a %a' % (best *1e6 / numbers, i, a, b, c)) sys.stdout.flush() bench('a', 'b', 'c') bench('\u010a', '\u010b', '\u010c') bench('\U0001000a', '\U0001000b', '\U0001000c')