On Fri, 2022-03-18 at 09:35 -0700, Guido van Rossum wrote:
The motivation has been explained already.

In this thread?

What on earth did your test do that got a speedup by using sets? Was it repeatedly checking whether a variable was in a slot? The other thing this does is rearrange the order in which slots appear from run to run (since set order is affected by hash randomization) and you might have gotten lucky with a popular attribute being moved to the front, where it's more likely to be in the memory cache already (cache lines being 64 bytes and pointers being 8 bytes nowadays).

I created objects in a tight loop, populating attributes, noting the elapsed time.

I agree that dicts are a use case to preserve.

On Fri, Mar 18, 2022 at 08:59 Paul Bryan <pbryan@anode.ca> wrote:
You've proposed a "what", but I don't see a "why".

Indeed, it will break some code.

I've been (currently legally) expressing __slots__ as sets, which is arguably more consistent with its purpose, and in testing appeared to perform better than tuples.

So, I would request that you amend the allowed types to include sets.

Also, people are using dicts to provide docstrings on attributes, so that would need to be addressed as well. 

On Fri, 2022-03-18 at 11:42 +0200, Serhiy Storchaka wrote:
18.03.22 11:29, Serhiy Storchaka пише:
It will break some code (there are 2 occurrences in the stdlib an 1 in
scripts), but that code can be easily fixed.

Actually it will break more code, because initializing __slots__ with a
list is pretty common. Maybe restrict it to tuple or list? But having an
immutable __slots__ may be more reliable.

_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org

_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/6AKHUOVUQ2SQRPE4HAGWAEW2VYRKPFCL/
Code of Conduct: http://python.org/psf/codeofconduct/