Is there no way to optimize the byte code without adding to the language? Not that it’s a bad idea anyway, but I wonder if frozen sets are common enough to warrant a change.
Are there any performance advantages to a frozen set? I ask because I do often use sets that could be frozen, but don’t need to be. E.g. they don’t change, nor are they used as keys. For example: If flag in {‘the’, ‘allowable’, ‘flags’}: … If a frozen set was even a little bit faster or used less memory, it would be nice to be able to create one directly. -CHB On Sun, Jan 16, 2022 at 8:50 AM MRAB <pyt...@mrabarnett.plus.com> wrote: > On 2022-01-16 08:27, Steven D'Aprano wrote: > [snip] > >>>> dis.dis("frozenset({1, 2, 3})") > > 1 0 LOAD_NAME 0 (frozenset) > > 2 BUILD_SET 0 > > 4 LOAD_CONST 0 (frozenset({1, 2, 3})) > > 6 SET_UPDATE 1 > > 8 CALL_FUNCTION 1 > > 10 RETURN_VALUE > > > > Got that? To create a frozenset of literals, first the compiler creates > > a frozenset constant containing what you wanted. Then at runtime, it: > > > > - looks up frozenset in globals and builtins; > > - loads the pre-prepared frozenset (which is exactly what we want); > > - creates a new set from that frozenset; > > - calls the frozenset() function on that set to create a new frozenset > > that duplicates the pre-prepared one; > > - and finally garbage-collects the temporary set. > > > [snip] > > Not quite as bad as that: > > >>> f = frozenset({1, 2, 3}) > >>> f is frozenset(f) > True > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/M2N3GNQRCPDYUQK7KGS3T5RI5NE3BBYJ/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- Christopher Barker, PhD (Chris) Python Language Consulting - Teaching - Scientific Software Development - Desktop GUI and Web Development - wxPython, numpy, scipy, Cython
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/DF44POLKWU3KUKXU2NR6NI4OYWMYG3NN/ Code of Conduct: http://python.org/psf/codeofconduct/