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-103000: Optimisedataclasses.asdict for the common case#104364

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
AlexWaygood merged 3 commits intopython:mainfromAlexWaygood:dataclasses-perf
May 10, 2023

Conversation

AlexWaygood
Copy link
Member

@AlexWaygoodAlexWaygood commentedMay 10, 2023
edited by bedevere-bot
Loading

Now that PEP 709 has been implemented, this change speeds up the following benchmark by 15% on my machine (Windows, PGO-optimised non-debug build):

Benchmark:
fromdataclassesimportdataclass,asdictimporttimeit@dataclassclassFoo:x:int@dataclassclassBar:x:Fooy:Fooz:Foo@dataclassclassBaz:x:Bary:Barz:Barfoo=Foo(42)bar=Bar(foo,foo,foo)baz=Baz(bar,bar,bar)print(timeit.timeit(lambda:asdict(baz),number=250_000))

This idea was originally@DavidCEllis's, but prior to PEP 709, comprehensions had too much overhead to make it worthwhile. Now that PEP 709 has been implemented, the impact of the patch seems pretty different.

Co-authored-by: David Ellisducksual@gmail.com

itamaro and kwsp reacted with rocket emoji
Co-authored-by: David Ellis <ducksual@gmail.com>
@AlexWaygoodAlexWaygood added the performancePerformance or resource usage labelMay 10, 2023
@AlexWaygoodAlexWaygood requested a review fromcarljmMay 10, 2023 18:43
@AlexWaygoodAlexWaygood changed the titleOptimisedataclasses.asdict for the common casegh-103000: Optimisedataclasses.asdict for the common caseMay 10, 2023
Copy link
Member

@carljmcarljm left a comment

Choose a reason for hiding this comment

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

Nice!

AlexWaygood reacted with rocket emoji
@AlexWaygoodAlexWaygood merged commit7b8d7f5 intopython:mainMay 10, 2023
@AlexWaygoodAlexWaygood deleted the dataclasses-perf branchMay 10, 2023 21:43
carljm added a commit to carljm/cpython that referenced this pull requestMay 10, 2023
* main:pythonGH-102181: Improve specialization stats for SEND (pythonGH-102182)pythongh-103000: Optimise `dataclasses.asdict` for the common case (python#104364)pythongh-103538: Remove unused TK_AQUA code (pythonGH-103539)pythonGH-87695: Fix OSError from `pathlib.Path.glob()` (pythonGH-104292)pythongh-104263: Rely on Py_NAN and introduce Py_INFINITY (pythonGH-104202)pythongh-104010: Separate and improve docs for `typing.get_origin` and `typing.get_args` (python#104013)pythongh-101819: Adapt _io._BufferedIOBase_Type methods to Argument Clinic (python#104355)pythongh-103960: Dark mode: invert image brightness (python#103983)pythongh-104252: Immortalize Py_EMPTY_KEYS (pythongh-104253)pythongh-101819: Clean up _io windows console io afterpythongh-104197 (python#104354)pythongh-101819: Harden _io init (python#104352)pythongh-103247: clear the module cache in a test in test_importlib/extensions/test_loader.py (pythonGH-104226)pythongh-103848: Adds checks to ensure that bracketed hosts found by urlsplit are of IPv6 or IPvFuture format (python#103849)pythongh-74895: adjust tests to work on Solaris (python#104326)pythongh-101819: Refactor _io in preparation for module isolation (python#104334)pythongh-90953: Don't use deprecated AST nodes in clinic.py (python#104322)pythongh-102327: Extend docs for "url" and "headers" parameters to HTTPConnection.request()pythongh-104328: Fix typo in ``typing.Generic`` multiple inheritance error message (python#104335)
carljm added a commit to carljm/cpython that referenced this pull requestMay 11, 2023
* main: (27 commits)pythongh-87849: fix SEND specialization family definition (pythonGH-104268)pythongh-101819: Adapt _io.IOBase.seek and _io.IOBase.truncate to Argument Clinic (python#104384)pythongh-101819: Adapt _io._Buffered* methods to Argument Clinic (python#104367)pythongh-101819: Refactor `_io` futher in preparation for module isolation (python#104369)pythongh-101819: Adapt _io.TextIOBase methods to Argument Clinic (python#104383)pythongh-101117: Improve accuracy of sqlite3.Cursor.rowcount docs (python#104287)pythonGH-92184: Convert os.altsep to '/' in filenames when creating ZipInfo objects (python#92185)pythongh-104357: fix inlined comprehensions that close over iteration var (python#104368)pythonGH-90208: Suppress OSError exceptions from `pathlib.Path.glob()` (pythonGH-104141)pythonGH-102181: Improve specialization stats for SEND (pythonGH-102182)pythongh-103000: Optimise `dataclasses.asdict` for the common case (python#104364)pythongh-103538: Remove unused TK_AQUA code (pythonGH-103539)pythonGH-87695: Fix OSError from `pathlib.Path.glob()` (pythonGH-104292)pythongh-104263: Rely on Py_NAN and introduce Py_INFINITY (pythonGH-104202)pythongh-104010: Separate and improve docs for `typing.get_origin` and `typing.get_args` (python#104013)pythongh-101819: Adapt _io._BufferedIOBase_Type methods to Argument Clinic (python#104355)pythongh-103960: Dark mode: invert image brightness (python#103983)pythongh-104252: Immortalize Py_EMPTY_KEYS (pythongh-104253)pythongh-101819: Clean up _io windows console io afterpythongh-104197 (python#104354)pythongh-101819: Harden _io init (python#104352)  ...
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@carljmcarljmcarljm approved these changes

@ericvsmithericvsmithAwaiting requested review from ericvsmithericvsmith is a code owner

Assignees
No one assigned
Labels
performancePerformance or resource usage
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

3 participants
@AlexWaygood@carljm@bedevere-bot

[8]ページ先頭

©2009-2025 Movatter.jp