Skip to content

Conversation

@JelleZijlstra
Copy link
Member

@JelleZijlstra JelleZijlstra commented Apr 25, 2025

@JelleZijlstra
Copy link
Member Author

Like #132956 this only helps -S startup because io gets imported anyway by site.py and possibly other places. Maybe we can make those other places also use _io but not convinced it's worth it.

@mdboom
Copy link
Contributor

mdboom commented Apr 25, 2025

I'm going to run this branch on our benchmarking hardware (as well as #132956), just so we have some numbers.

@mdboom
Copy link
Contributor

mdboom commented Apr 26, 2025

Benchmarking of this PR: https://github.com/faster-cpython/benchmarking-public/blob/main/results/bm-20250425-3.14.0a7%2B-dac50cc/bm-20250425-linux-x86_64-JelleZijlstra-sunder_io-3.14.0a7%2B-dac50cc-vs-base.svg

This is actually more effective than (19%) than #132956 (12%). I think it makes sense to merge this, and maybe the other just for good measure (though it should have no additional effect).

@JelleZijlstra JelleZijlstra marked this pull request as ready for review April 26, 2025 16:06
@JelleZijlstra
Copy link
Member Author

This is now ready.

One tricky aspect is that we need to check any side effects that come from importing io. Most of the file is defining ABCs and registering things to those ABCs; it's fine if we omit that because the ABCs don't exist if the module isn't imported. However, it also sets the __module__ attribute on the UnsupportedOperation exception. I changed the code to set that attribute in _io instead because otherwise users who never import io would see this exception with the wrong module name.

@@ -0,0 +1,2 @@
Speed up startup with the ``-S`` argument by about 19% by importing the
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is worth mentioning "vs what" when stating an improvement %.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's 19% vs. before this commit, but it's only 1.5% faster than 3.13.0 (which is probably what most users care about, since they don't run main). I would argue 1.5% is in the noise, so we probably shouldn't have a what's new entry at all -- this is just counteracting a regression in 3.14 development.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's only a NEWS entry, not text in the What's New, so I'll remove the 19% claim but leave the NEWS entry since this could affect behavior some users care about.

Copy link
Contributor

@mdboom mdboom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but I think we should remove the whatsnew.

@bedevere-app
Copy link

bedevere-app bot commented Apr 28, 2025

When you're done making the requested changes, leave the comment: I have made the requested changes; please review again.

@JelleZijlstra
Copy link
Member Author

I have made the requested changes; please review again

@bedevere-app
Copy link

bedevere-app bot commented Apr 28, 2025

Thanks for making the requested changes!

@mdboom, @gpshead: please review the changes made to this pull request.

@bedevere-app bedevere-app bot requested review from gpshead and mdboom April 28, 2025 13:33
@JelleZijlstra JelleZijlstra merged commit 58567cc into python:main Apr 28, 2025
47 of 50 checks passed
@JelleZijlstra JelleZijlstra deleted the sunder-io branch April 28, 2025 15:39
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