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-93910: [Enum] restore member.member restriction while keeping performance boost #94913

Merged
merged 1 commit into from
Jul 17, 2022

Conversation

ethanfurman
Copy link
Member

@ethanfurman ethanfurman commented Jul 17, 2022

Restores the restriction removed in #94614 while keeping the performance boost.

@ethanfurman ethanfurman self-assigned this Jul 17, 2022
@ethanfurman ethanfurman changed the title [Enum] restore member.member restriction while keeping performance boost gh-93910: [Enum] restore member.member restriction while keeping performance boost Jul 17, 2022
@ethanfurman ethanfurman merged commit c20186c into python:main Jul 17, 2022
@ethanfurman ethanfurman added 3.11 only security fixes 3.12 bugs and security fixes needs backport to 3.11 only security fixes labels Jul 17, 2022
@miss-islington
Copy link
Contributor

Thanks @ethanfurman for the PR 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

@bedevere-bot
Copy link

GH-94915 is a backport of this pull request to the 3.11 branch.

@bedevere-bot bedevere-bot removed the needs backport to 3.11 only security fixes label Jul 17, 2022
@ethanfurman ethanfurman added stdlib Python modules in the Lib dir needs backport to 3.11 only security fixes labels Jul 17, 2022
@miss-islington
Copy link
Contributor

Thanks @ethanfurman for the PR 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Jul 17, 2022
…g performance boost (pythonGH-94913)

(cherry picked from commit c20186c)

Co-authored-by: Ethan Furman <[email protected]>
@ethanfurman ethanfurman removed the needs backport to 3.11 only security fixes label Jul 17, 2022
hauntsaninja added a commit to hauntsaninja/cpython that referenced this pull request Jul 17, 2022
This halves access to attributes such as methods or _sunder_ name

Benchmarked using:
```
from enum import Enum

class Color(Enum):
    RED = "Red"
    BLUE = "Blue"
    GREEN = "Green"

def f():
    for _ in range(1000):
        Color.RED
        Color.BLUE
        Color.GREEN

def g():
    for _ in range(1000):
        Color.RED._name_
        Color.BLUE._name_
        Color.GREEN._name_

import timeit
print(timeit.timeit('f()', number=10000, globals=globals()))
print(timeit.timeit('g()', number=10000, globals=globals()))
```

As of today morning:
```
6da988a λ ./python.exe bm_enum.py
1.499613167019561
1.5516562079428695
```

As of the latest enum change python#94913:
```
c20186c λ ./python.exe bm_enum.py
1.4998537090141326
16.095267291995697
```

As of this PR:
```
pythongh-93910-micro λ ./python.exe bm_enum.py
1.4983433339511976
8.81327024998609
```
miss-islington added a commit that referenced this pull request Jul 17, 2022
…ormance boost (GH-94913)

(cherry picked from commit c20186c)

Co-authored-by: Ethan Furman <[email protected]>
ethanfurman added a commit that referenced this pull request Jul 18, 2022
ethanfurman added a commit that referenced this pull request Jul 18, 2022
ethanfurman added a commit that referenced this pull request Jul 18, 2022
gpshead pushed a commit that referenced this pull request Jul 18, 2022
@ethanfurman ethanfurman deleted the enum-fast branch April 4, 2023 02:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.11 only security fixes 3.12 bugs and security fixes skip news stdlib Python modules in the Lib dir
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants