RepoFlow Team · Feb 3, 2026

Python 3.9 to 3.14 Performance Benchmarks for Official Python (CPython)

Official Python (CPython) results across JSON, hashing, strings, loops, and HTTP throughput.

After publishing our Node.js version benchmarks, we got a lot of requests to benchmark Python next. So we ran the same style of tests across Python 3.9 through 3.14 to see what actually changed.
All benchmarks in this article were run against the following Python versions:
3.9.25, 3.10.19, 3.11.14, 3.12.12, 3.13.11, 3.14.2 (latest)

These are stable patch releases across several minor versions, which makes it easier to see trends across the recent Python generations.

HTTP GET throughput

Localhost server using ThreadingHTTPServer with keep-alive and concurrent clients. Reported as MB/s (with a 1 KB payload, MB/s times 1024 is roughly requests/sec).

json.loads speed

Parsing the same JSON payload repeatedly.

json.dumps speed

Serializing the same Python object repeatedly with compact separators.

SHA-256 hashing

hashlib.sha256 throughput (MB/s).

Buffer copy (64 KB)

Memory throughput using memoryview slice assignment (MB/s).

Array map plus reduce style loop

A transform plus aggregate pass over a list (ops/s).

String building with +=

Repeated concatenation in a loop (MB/s based on produced bytes).

String building with join

Joining many parts repeatedly (MB/s based on produced bytes).

Integer loop + arithmetic

Tight numeric loop with bit ops (ops/s).

Integer loop with randomized input

Similar loop, but adds randomness using random.Random(seed) to make it less predictable (ops/s).

Base64 encoding

base64.b64encode throughput (MB/s).

Parsing Dates

Parsing ISO timestamps repeatedly (ops/s).

Regex Speed

In this run the regex pattern does not match the generated lines, so the harness records 0 matches. The runtime still reflects the cost of attempted matches, but it is not a true “matches/sec” benchmark unless the pattern and fixture actually match.

How the Tests Were Performed

  1. Hardware: Apple M4, 10 cores, macOS 25.0.0 (arm64)
  2. Tooling: Custom Python benchmark script (no external frameworks)

Conclusion

Python performance has improved meaningfully across several common building blocks, especially since 3.11, but the “best version” depends on what you do most.

These benchmarks make it easier to see which upgrades are likely to help your workload, and which areas are basically unchanged.

Let us know which benchmark you’d like to see next.
Happy Benchmark Tuesday!

Share article

Benchmark
Express 4 vs Express 5 Performance Benchmark
Product
Cache GitHub Releases with a Universal Repository
Release
Run a Private Docker Registry on Your iPhone