| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
|
Following on from pypa/packaging#1064, Python 3.12 and 3.13 are slower, even though 3.10, 3.11 and 3.14 are much faster. Measured with hyperfine on python.org versions on macOS:
Marking as draft for now. Details❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.10 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.10 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 6.632 s ± 0.515 s [User: 6.138 s, System: 0.359 s]
Range (min … max): 6.237 s … 7.214 s 3 runs
Benchmark 2: PR
Time (mean ± σ): 3.456 s ± 0.122 s [User: 3.257 s, System: 0.169 s]
Range (min … max): 3.373 s … 3.596 s 3 runs
Summary
PR ran
1.92 ± 0.16 times faster than main
importlib_metadata on speedup-normalize [?] via 🐍 v3.14.2 via 💎 v3.1.3 took 42s
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.11 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.11 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 6.331 s ± 0.541 s [User: 5.415 s, System: 0.420 s]
Range (min … max): 5.859 s … 6.921 s 3 runs
Benchmark 2: PR
Time (mean ± σ): 3.302 s ± 0.031 s [User: 3.023 s, System: 0.209 s]
Range (min … max): 3.273 s … 3.334 s 3 runs
Summary
PR ran
1.92 ± 0.16 times faster than main
importlib_metadata on speedup-normalize [?] via 🐍 v3.14.2 via 💎 v3.1.3 took 38s
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.12 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.12 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 5.690 s ± 0.183 s [User: 5.281 s, System: 0.274 s]
Range (min … max): 5.492 s … 5.852 s 3 runs
Benchmark 2: PR
Time (mean ± σ): 6.640 s ± 0.069 s [User: 6.169 s, System: 0.296 s]
Range (min … max): 6.560 s … 6.688 s 3 runs
Summary
main ran
1.17 ± 0.04 times faster than PR
importlib_metadata on speedup-normalize [?] via 🐍 v3.14.2 via 💎 v3.1.3 took 50s
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.13 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.13 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 5.784 s ± 0.109 s [User: 5.359 s, System: 0.253 s]
Range (min … max): 5.674 s … 5.891 s 3 runs
Benchmark 2: PR
Time (mean ± σ): 5.957 s ± 0.074 s [User: 5.601 s, System: 0.241 s]
Range (min … max): 5.876 s … 6.022 s 3 runs
Summary
main ran
1.03 ± 0.02 times faster than PR
importlib_metadata on speedup-normalize [?] via 🐍 v3.14.2 via 💎 v3.1.3 took 50s
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.14 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.14 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 5.749 s ± 0.060 s [User: 5.442 s, System: 0.223 s]
Range (min … max): 5.684 s … 5.802 s 3 runs
Benchmark 2: PR
Time (mean ± σ): 2.163 s ± 0.125 s [User: 1.922 s, System: 0.169 s]
Range (min … max): 2.020 s … 2.257 s 3 runs
Summary
PR ran
2.66 ± 0.16 times faster than main |
Sorry, something went wrong.
|
Updated to match python/cpython#144083 and now 3.0-3.6x speedup across all Python versions:
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.10 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.10 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 6.322 s ± 0.229 s [User: 5.905 s, System: 0.292 s]
Range (min … max): 6.057 s … 6.460 s 3 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs.
Benchmark 2: PR
Time (mean ± σ): 2.046 s ± 0.055 s [User: 1.892 s, System: 0.128 s]
Range (min … max): 2.004 s … 2.108 s 3 runs
Summary
PR ran
3.09 ± 0.14 times faster than main
importlib_metadata on speedup-normalize [?⇡] via 🐍 v3.14.3 via 💎 v3.1.3 took 33s
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.11 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.11 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 5.827 s ± 0.083 s [User: 5.293 s, System: 0.315 s]
Range (min … max): 5.731 s … 5.877 s 3 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs.
Benchmark 2: PR
Time (mean ± σ): 1.612 s ± 0.012 s [User: 1.514 s, System: 0.095 s]
Range (min … max): 1.602 s … 1.625 s 3 runs
Summary
PR ran
3.62 ± 0.06 times faster than main
importlib_metadata on speedup-normalize [?⇡] via 🐍 v3.14.3 via 💎 v3.1.3 took 32s
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.12 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.12 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 5.557 s ± 0.041 s [User: 5.265 s, System: 0.216 s]
Range (min … max): 5.516 s … 5.598 s 3 runs
Benchmark 2: PR
Time (mean ± σ): 1.889 s ± 0.510 s [User: 1.564 s, System: 0.179 s]
Range (min … max): 1.578 s … 2.478 s 3 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs.
Summary
PR ran
2.94 ± 0.79 times faster than main
importlib_metadata on speedup-normalize [?⇡] via 🐍 v3.14.3 via 💎 v3.1.3 took 32s
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.13 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.13 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 5.572 s ± 0.069 s [User: 5.322 s, System: 0.195 s]
Range (min … max): 5.492 s … 5.614 s 3 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs.
Benchmark 2: PR
Time (mean ± σ): 1.640 s ± 0.015 s [User: 1.544 s, System: 0.092 s]
Range (min … max): 1.626 s … 1.655 s 3 runs
Summary
PR ran
3.40 ± 0.05 times faster than main
importlib_metadata on speedup-normalize [?⇡] via 🐍 v3.14.3 via 💎 v3.1.3 took 31s
❯ hyperfine --warmup 1 -r 3 \
-n main --prepare 'git checkout main' 'python3.14 benchmark_names.py' \
-n PR --prepare 'git checkout speedup-normalize -q' 'python3.14 benchmark_names.py'
Benchmark 1: main
Time (mean ± σ): 5.886 s ± 0.266 s [User: 5.361 s, System: 0.283 s]
Range (min … max): 5.579 s … 6.050 s 3 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs.
Benchmark 2: PR
Time (mean ± σ): 1.667 s ± 0.008 s [User: 1.573 s, System: 0.091 s]
Range (min … max): 1.661 s … 1.676 s 3 runs
Summary
PR ran
3.53 ± 0.16 times faster than main |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
This is the same as python/cpython#143660.
We can apply @henryiii's improvement to packaging in pypa/packaging#1030 (see also https://iscinumpy.dev/post/packaging-faster/) to improve the performance of normalize and make it ~3.7 times faster.
Benchmark
Run Prepared.normalize(n) on every name in PyPI:
Benchmark data can be found at https://gist.github.com/hugovk/efdbee0620cc64df7b405b52cf0b6e42
Before
After
3.7 times faster.