Skip to content

gh-132509: Speed up bytes iteration in FOR_ITER_VIRTUAL - #157353

Open
Wulian233 wants to merge 1 commit into
python:mainfrom
Wulian233:FOR_ITER_VIRTUAL
Open

gh-132509: Speed up bytes iteration in FOR_ITER_VIRTUAL#157353
Wulian233 wants to merge 1 commit into
python:mainfrom
Wulian233:FOR_ITER_VIRTUAL

Conversation

@Wulian233

@Wulian233 Wulian233 commented Sep 12, 2026

Copy link
Copy Markdown
Contributor
Benchmark Main PR Throughput improvement
Empty loop 13.858 ns/item 11.850 ns/item 16.9% faster
XOR accumulation 28.195 ns/item 25.409 ns/item 11.0% faster
Conditional count 28.649 ns/item 24.721 ns/item 15.9% faster
Details test script
import statistics
import timeit

DATA = bytes(range(256)) * 4096  # 1 MiB
NUMBER = 10
REPEAT = 11


def loop_pass():
    for byte in DATA:
        pass


def loop_xor():
    result = 0
    for byte in DATA:
        result ^= byte
    return result


def loop_count():
    result = 0
    for byte in DATA:
        if byte == 255:
            result += 1
    return result


BENCHMARKS = (
    ("empty loop", loop_pass),
    ("xor accumulation", loop_xor),
    ("conditional count", loop_count),
)

# Warm up adaptive specialization.
for _, benchmark in BENCHMARKS:
    for _ in range(10):
        benchmark()

print("| Benchmark | Median | Minimum | Median ns/item |")
print("|---|---:|---:|---:|")

for name, benchmark in BENCHMARKS:
    samples = timeit.repeat(
        benchmark,
        number=NUMBER,
        repeat=REPEAT,
    )
    median = statistics.median(samples)
    minimum = min(samples)
    ns_per_item = median * 1e9 / (NUMBER * len(DATA))
    print(
        f"| {name} | {median:.9f} s | "
        f"{minimum:.9f} s | {ns_per_item:.3f} |"
    )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant