Skip to content

timeit Module

The timeit module measures execution time of code snippets, useful for benchmarking and performance comparison. It handles timing overhead and runs code multiple times for accurate results.


Basic Timing

Simple Benchmarking

import timeit

result = timeit.timeit("sum(range(100))", number=100000)
print(f"Execution time: {result:.4f}s")

Output:

Execution time: 0.1234s

Timer Class

import timeit

timer = timeit.Timer("x = 1 + 1")
result = timer.timeit(number=1000000)
print(f"1000000 iterations: {result:.4f}s")

Output:

1000000 iterations: 0.0234s

Setup Code

Initializing Before Timing

import timeit

setup = "lst = list(range(1000))"
time1 = timeit.timeit("5 in lst", setup=setup, number=100000)
print(f"Membership test: {time1:.4f}s")

Output:

Membership test: 0.0456s

Comparing Code Snippets

Which is Faster?

import timeit

concat_time = timeit.timeit(
    'x = "a" + "b" + "c"',
    number=1000000
)

format_time = timeit.timeit(
    'x = f"{"a"}{"b"}{"c"}"',
    number=1000000
)

print(f"Concatenation: {concat_time:.4f}s")
print(f"F-string: {format_time:.4f}s")

Output:

Concatenation: 0.0234s
F-string: 0.0198s

Repeat and Compare

Multiple Runs

import timeit

times = timeit.repeat(
    "sum(range(100))",
    number=10000,
    repeat=5
)

print(f"Times: {[f'{t:.4f}' for t in times]}")
print(f"Best: {min(times):.4f}s")
print(f"Worst: {max(times):.4f}s")

Output:

Times: ['0.1234', '0.1201', '0.1198', '0.1205', '0.1211']
Best: 0.1198s
Worst: 0.1234s

Real-World Example

Benchmarking List Operations

import timeit

operations = {
    'append': 'lst.append(100)',
    'insert_0': 'lst.insert(0, 100)',
    'extend': 'lst.extend([100, 101])'
}

setup = "lst = list(range(100))"

for name, code in operations.items():
    time = timeit.timeit(code, setup=setup, number=10000)
    print(f"{name}: {time:.4f}s")

Output:

append: 0.0012s
insert_0: 0.0456s
extend: 0.0045s