diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2022-07-07 12:01:09 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-07 12:01:09 (GMT) |
commit | 65c431685b40583b877da573e41514d63217815d (patch) | |
tree | 60d6cf81492f08025e5d6ff2e481153a3a8824c3 /Lib/test/test_enum.py | |
parent | 421c4b025583df9396dbd6b1e0e90d4a8b6d083f (diff) | |
download | cpython-65c431685b40583b877da573e41514d63217815d.zip cpython-65c431685b40583b877da573e41514d63217815d.tar.gz cpython-65c431685b40583b877da573e41514d63217815d.tar.bz2 |
gh-93910: Fix enum performance regression (GH-94614)
This removes the performance regression in 3.11, **at the expense of not fixing
the "bug" that allows accessing values from values** (e.g. `Color.RED.BLUE`).
Using the benchmark @markshannon [presented](https://github.com/python/cpython/issues/93910GH-issuecomment-1165503032), the results are:
| Version | Enum | Fast enum | Normal class |
| --- | --- | --- | --- |
| 3.10 | 2.04 | 0.59 | 0.56 |
| 3.11 | 2.78 | 0.31 | 0.15 |
| This PR | 1.30 | 0.32 | 0.16 |
I share this mostly as information about the source of the regression, as this may be useful. It may be that the lower-risk approach for the beta is just to revert to a previously-known working state.
(cherry picked from commit ed136b96737fdbeff864079d12904cb962c6cce5)
Co-authored-by: Michael Droettboom <mdboom@gmail.com>
Diffstat (limited to 'Lib/test/test_enum.py')
-rw-r--r-- | Lib/test/test_enum.py | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index ac5c52b..f9a6627 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2611,6 +2611,7 @@ class TestSpecial(unittest.TestCase): self.assertEqual(Private._Private__corporal, 'Radar') self.assertEqual(Private._Private__major_, 'Hoolihan') + @unittest.skip("Accessing all values retained for performance reasons, see GH-93910") def test_exception_for_member_from_member_access(self): with self.assertRaisesRegex(AttributeError, "<enum .Di.> member has no attribute .NO."): class Di(Enum): |