Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-103951: enable optimization for fast attribute access on module subclasses#126264

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged

Conversation

@skirpichev
Copy link
Contributor

@skirpichevskirpichev commentedNov 1, 2024
edited
Loading

This patch relax specialization requirements from
PyModule_CheckExact(op) to
Py_TYPE(op)->tp_getattro != PyModule_Type.tp_getattro.

Benchmarks:

# a.pyimportpyperfimportbimportcrunner=pyperf.Runner()runner.timeit('b.x','b.x',globals=globals())runner.timeit('c.x','c.x',globals=globals())
# b.pyx=1
# c.pyimportsys,typesx=1class_Foo(types.ModuleType):passsys.modules[__name__].__class__=_Foo

On the main:

$ python a.py -qb.x: Mean +- std dev: 50.2 ns +- 2.7 nsc.x: Mean +- std dev: 132 ns +- 7 ns

With the patch:

$ python a.py -qb.x: Mean +- std dev: 52.9 ns +- 3.6 nsc.x: Mean +- std dev: 52.6 ns +- 2.7 ns

…ule subclassesThis patch relax specialization requirements from``PyModule_CheckExact(op)`` to``Py_TYPE(op)->tp_getattro != PyModule_Type.tp_getattro``.Benchmarks:```pyimport pyperfimport bimport crunner = pyperf.Runner()runner.timeit('b.x', 'b.x', globals=globals())runner.timeit('c.x', 'c.x', globals=globals())``````pyx = 1``````pyimport sys, typesx = 1class _Foo(types.ModuleType): passsys.modules[__name__].__class__ = _Foo```On the main:```$ python a.py -qb.x: Mean +- std dev: 50.2 ns +- 2.7 nsc.x: Mean +- std dev: 132 ns +- 7 ns```With the patch:```$ python a.py -qb.x: Mean +- std dev: 52.9 ns +- 3.6 nsc.x: Mean +- std dev: 52.6 ns +- 2.7 ns```Co-authored-by: Nicolas Tessore <n.tessore@ucl.ac.uk>
@skirpichevskirpichev changed the titlegh-103951: enable optimization for fast attribute access on module su…gh-103951: enable optimization for fast attribute access on module subclassesNov 1, 2024
@skirpichev

This comment was marked as outdated.

@skirpichevskirpichev marked this pull request as draftNovember 5, 2024 08:50
@skirpichev

This comment was marked as outdated.

@skirpichevskirpichev marked this pull request as ready for reviewNovember 5, 2024 10:11
@skirpichevskirpichev marked this pull request as draftNovember 6, 2024 15:24
@skirpichevskirpichev marked this pull request as ready for reviewNovember 7, 2024 03:48
@ntessore
Copy link
Contributor

Thanks for the PR@skirpichev

skirpichev reacted with thumbs up emoji

@Fidget-Spinner
Copy link
Member

@skirpichev do you have commit rights?

@skirpichev
Copy link
ContributorAuthor

@Fidget-Spinner, no. I'm just member of Python triage team.

Fidget-Spinner reacted with thumbs up emoji

@Fidget-SpinnerFidget-Spinner merged commitd9e2512 intopython:mainNov 15, 2024
61 checks passed
@skirpichevskirpichev deleted the opt-mod-loadattr-103951 branchNovember 15, 2024 08:10
picnixz pushed a commit to picnixz/cpython that referenced this pull requestDec 8, 2024
…ule subclasses (pythonGH-126264)Co-authored-by: Nicolas Tessore <n.tessore@ucl.ac.uk>
ebonnal pushed a commit to ebonnal/cpython that referenced this pull requestJan 12, 2025
…ule subclasses (pythonGH-126264)Co-authored-by: Nicolas Tessore <n.tessore@ucl.ac.uk>
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@Fidget-SpinnerFidget-SpinnerFidget-Spinner approved these changes

@markshannonmarkshannonAwaiting requested review from markshannonmarkshannon is a code owner

@ericsnowcurrentlyericsnowcurrentlyAwaiting requested review from ericsnowcurrently

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

3 participants

@skirpichev@ntessore@Fidget-Spinner

[8]ページ先頭

©2009-2025 Movatter.jp