Skip to content

Only enumerate extension entry points when required #1216

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

Merged
merged 3 commits into from
May 24, 2022

Conversation

akx
Copy link
Contributor

@akx akx commented Jan 25, 2022

On my machine, this saves 33 milliseconds off import time for the library, which could be significant for e.g. CLI applications.

(master) $ hyperfine 'python -m markdown'
Benchmark 1: python -m markdown
  Time (mean ± σ):     113.1 ms ±  11.5 ms    [User: 84.8 ms, System: 19.2 ms]
  Range (min … max):   100.1 ms … 151.7 ms    19 runs

(late-extensions) $ hyperfine 'python -m markdown'
Benchmark 1: python -m markdown
  Time (mean ± σ):      80.7 ms ±   4.7 ms    [User: 61.0 ms, System: 13.1 ms]
  Range (min … max):    73.9 ms …  94.8 ms    30 runs

There is also a small benefit to the overall test suite run time:

(master) $ hyperfine 'python -m unittest discover tests'
Benchmark 1: python -m unittest discover tests
  Time (mean ± σ):      1.177 s ±  0.074 s    [User: 1.073 s, System: 0.051 s]
  Range (min … max):    1.075 s …  1.250 s    10 runs

late-extensions) $ hyperfine 'python -m unittest discover tests'
Benchmark 1: python -m unittest discover tests
  Time (mean ± σ):      1.085 s ±  0.029 s    [User: 0.990 s, System: 0.046 s]
  Range (min … max):    1.034 s …  1.127 s    10 runs

Going forward, one could consider making the importlib.metadata backport an optional dependency – it's only required if one wants to load an extension by name.

On my machine, this saves 33 milliseconds off import time for the library.

```
(master) $ hyperfine 'python -m markdown'
Benchmark 1: python -m markdown
  Time (mean ± σ):     113.1 ms ±  11.5 ms    [User: 84.8 ms, System: 19.2 ms]
  Range (min … max):   100.1 ms … 151.7 ms    19 runs

(late-extensions) $ hyperfine 'python -m markdown'
Benchmark 1: python -m markdown
  Time (mean ± σ):      80.7 ms ±   4.7 ms    [User: 61.0 ms, System: 13.1 ms]
  Range (min … max):    73.9 ms …  94.8 ms    30 runs
```
@waylan waylan added the requires-changes Awaiting updates after a review. label Jan 25, 2022
@waylan waylan added this to the Version 3.4 milestone May 5, 2022
@waylan
Copy link
Member

waylan commented May 5, 2022

I will merge this if a note is added to the release notes.

@waylan waylan merged commit e958ec4 into Python-Markdown:master May 24, 2022
@waylan waylan added approved The pull request is ready to be merged. and removed requires-changes Awaiting updates after a review. labels May 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved The pull request is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants