Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-109653: Improve import time of importlib.metadata / email.utils #114664

Merged
merged 3 commits into from
Jan 29, 2024

Commits on Jan 28, 2024

  1. pythongh-109653: Improve import time of importlib.metadata / email.utils

    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.
    hauntsaninja committed Jan 28, 2024
    Configuration menu
    Copy the full SHA
    579644a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    94fd0d7 View commit details
    Browse the repository at this point in the history
  3. comments

    hauntsaninja committed Jan 28, 2024
    Configuration menu
    Copy the full SHA
    3eefd32 View commit details
    Browse the repository at this point in the history