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: Reduce import overhead of uuid module on Linux #115160

Merged
merged 2 commits into from
Mar 6, 2024

Conversation

hauntsaninja
Copy link
Contributor

@hauntsaninja hauntsaninja commented Feb 8, 2024

This follows in the footsteps of #21586
This speeds up import uuid by about 6ms on Linux.

Before:

λ hyperfine -w 4 "./python -c 'import uuid'"
Benchmark 1: ./python -c 'import uuid'
  Time (mean ± σ):      20.4 ms ±   0.4 ms    [User: 16.7 ms, System: 3.8 ms]
  Range (min … max):    19.6 ms …  21.8 ms    136 runs

After:

λ hyperfine -w 4 "./python -c 'import uuid'"
Benchmark 1: ./python -c 'import uuid'
  Time (mean ± σ):      14.5 ms ±   0.3 ms    [User: 11.5 ms, System: 3.2 ms]
  Range (min … max):    13.9 ms …  16.0 ms    175 runs

This follows in the footsteps of python#21586
This speeds up import uuid by about 6ms on Linux.

Before:
```
λ hyperfine -w 4 "./python -c 'import uuid'"
Benchmark 1: ./python -c 'import uuid'
  Time (mean ± σ):      20.4 ms ±   0.4 ms    [User: 16.7 ms, System: 3.8 ms]
  Range (min … max):    19.6 ms …  21.8 ms    136 runs
```
After:
```
λ hyperfine -w 4 "./python -c 'import uuid'"
Benchmark 1: ./python -c 'import uuid'
  Time (mean ± σ):      14.5 ms ±   0.3 ms    [User: 11.5 ms, System: 3.2 ms]
  Range (min … max):    13.9 ms …  16.0 ms    175 runs
```
@hauntsaninja hauntsaninja changed the title gh-109653: Reduce import overhead of uuid module gh-109653: Reduce import overhead of uuid module on Linux Feb 8, 2024
@zooba zooba removed their request for review February 8, 2024 14:14
@zooba
Copy link
Member

zooba commented Feb 8, 2024

I'm not the right person to review this.

You need someone who knows whether sys.platform == "linux" implies the same things as the platform module. In general, they don't, so if you want my review I would reject this change as being too risky.

@hauntsaninja
Copy link
Contributor Author

hauntsaninja commented Feb 8, 2024

Thanks for the quick response! I'll wait for someone else to review.

The value of sys.platform comes from

cpython/configure

Line 4296 in 1032326

case $MACHDEP in
while the value of platform.system comes from os.uname + munging and falling back to sys.platform

Note we don't need a one-to-one correspondence here (and I'm not sure there is one, e.g. on ancient Python versions it was possible to have sys.platform == "linux2" while presumably platform.system() was still Linux). But we just need implication in one direction since we preserve the else branch.

@ofek
Copy link
Contributor

ofek commented Feb 28, 2024

This seems correct to me; I don't see any risk to this change.

@hauntsaninja hauntsaninja merged commit 68b8fff into python:main Mar 6, 2024
32 checks passed
@hauntsaninja hauntsaninja deleted the uuid-import branch March 6, 2024 22:39
adorilson pushed a commit to adorilson/cpython that referenced this pull request Mar 25, 2024
…on#115160)

This follows in the footsteps of python#21586
This speeds up import uuid by about 6ms on Linux.

Before:
```
λ hyperfine -w 4 "./python -c 'import uuid'"
Benchmark 1: ./python -c 'import uuid'
  Time (mean ± σ):      20.4 ms ±   0.4 ms    [User: 16.7 ms, System: 3.8 ms]
  Range (min … max):    19.6 ms …  21.8 ms    136 runs
```
After:
```
λ hyperfine -w 4 "./python -c 'import uuid'"
Benchmark 1: ./python -c 'import uuid'
  Time (mean ± σ):      14.5 ms ±   0.3 ms    [User: 11.5 ms, System: 3.2 ms]
  Range (min … max):    13.9 ms …  16.0 ms    175 runs
```
diegorusso pushed a commit to diegorusso/cpython that referenced this pull request Apr 17, 2024
…on#115160)

This follows in the footsteps of python#21586
This speeds up import uuid by about 6ms on Linux.

Before:
```
λ hyperfine -w 4 "./python -c 'import uuid'"
Benchmark 1: ./python -c 'import uuid'
  Time (mean ± σ):      20.4 ms ±   0.4 ms    [User: 16.7 ms, System: 3.8 ms]
  Range (min … max):    19.6 ms …  21.8 ms    136 runs
```
After:
```
λ hyperfine -w 4 "./python -c 'import uuid'"
Benchmark 1: ./python -c 'import uuid'
  Time (mean ± σ):      14.5 ms ±   0.3 ms    [User: 11.5 ms, System: 3.2 ms]
  Range (min … max):    13.9 ms …  16.0 ms    175 runs
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants