]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-109653: Improve import time of importlib.metadata / email.utils (#114664)
authorShantanu <12621235+hauntsaninja@users.noreply.github.com>
Mon, 29 Jan 2024 09:30:22 +0000 (01:30 -0800)
committerGitHub <noreply@github.com>
Mon, 29 Jan 2024 09:30:22 +0000 (01:30 -0800)
commit2124a3ddcc0e274521f74d239f0e94060e17dd7f
tree893f989eaa97abb8ef56b8977445f605dc4e4ca9
parentd7d0d13cd37651990586d31d8974c59bd25e1045
gh-109653: Improve import time of importlib.metadata / email.utils (#114664)

My criterion for delayed imports is that they're only worth it if the
majority of users of the module would benefit from it, otherwise you're
just moving latency around unpredictably.

mktime_tz is not used anywhere in the standard library and grep.app
indicates it's not got much use in the ecosystem either.

Distribution.files is not nearly as widely used as other
importlib.metadata APIs, so we defer the csv import.

Before:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      65.1 ms ±   0.5 ms    [User: 55.3 ms, System: 9.8 ms]
  Range (min … max):    64.4 ms …  66.4 ms    44 runs
```

After:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      62.0 ms ±   0.3 ms    [User: 52.5 ms, System: 9.6 ms]
  Range (min … max):    61.3 ms …  62.8 ms    46 runs
```

for about a 3ms saving with warm disk cache, maybe 7-11ms with cold disk
cache.
Lib/email/_parseaddr.py
Lib/importlib/metadata/__init__.py
Misc/NEWS.d/next/Library/2024-01-28-00-48-12.gh-issue-109653.vF4exe.rst [new file with mode: 0644]