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/

Reply via email to