""" Micro-benchmark for the Python. Run it with: ./python.orig benchmark.py script bench_str.py --file=orig ./python.patched benchmark.py script bench_str.py --file=patched ./python.patched benchmark.py compare_to orig patched Download benchmark.py from: https://bitbucket.org/haypo/misc/raw/tip/python/benchmark.py """ COUNT = (1, 5, 10, 25, 100, 200, 500) def run_benchmark(bench): bench.start_group('%i') for n in COUNT: bench.timeit(setup='n = %s; fmt = b"%%d" * n; arg = tuple([12345]*n)' % n, stmt='fmt % arg') bench.start_group('x=%i') for n in COUNT: bench.timeit(setup='n = %s; fmt = b"x=%%d " * n; arg = tuple([12345]*n)' % n, stmt='fmt % arg') bench.start_group('%x') for n in COUNT: bench.timeit(setup='n = %s; fmt = b"%%d" * n; arg = tuple([12345]*n)' % n, stmt='fmt % arg') bench.start_group('x=%x') for n in COUNT: bench.timeit(setup='n = %s; fmt = b"x=%%d " * n; arg = tuple([0xabcdef]*n)' % n, stmt='fmt % arg') bench.start_group('large int: %i') for n in range(0, 201, 50): bench.timeit(setup='fmt = b"%%i"; arg = 10 ** %s - 1' % n, stmt='fmt % arg') bench.start_group('large int: x=%i') for n in range(0, 200, 50): bench.timeit(setup='fmt = b"x=%%i"; arg = 10 ** %s - 1' % n, stmt='fmt % arg')