You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2020-02-26.19:09:15.608>created_at=<Date2020-02-25.20:17:09.547>labels= ['expert-C-API', '3.9', 'performance']
title='update_one_slot() does not inherit sq_contains and mp_subscript if they are explictly declared'updated_at=<Date2020-02-26.19:09:15.607>user='https://github.com/Marco-Sulla'
I noticed that __contains__() and __getitem__() of subclasses of dict are much slower. I asked why on StackOverflow, and an user seemed to find the reason.
The problem for him/her is that dict implements directly __contains__() and __getitem__(). Usually, sq_contains and mp_subscript are wrapped to implement __contains__() and __getitem__(), but this way dict is a little faster, I suppose.
The problem is that update_one_slot() searches for the wrappers. If it does not find them, it does not inherit the __contains__() and __getitem__() of the class, but create a __contains__() and __getitem__() functions that do an MRO search and call the superclass method. This is why __contains__() and __getitem__() of dict subclasses are slower.
Is it possible to modify update_one_slot() so that, if no wrapper is found, the explicit implementation is inherited?
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: