> On 16 Jan 2022, at 18:44, Christopher Barker <python...@gmail.com> wrote:
> 
> 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.

Not really relevant for the discussion, but CPython automaticly creates a 
frozenset here (set display with immutable members) as an optimisation.

>>> dis.dis("x in {1,2,3}")
  1           0 LOAD_NAME                0 (x)
              2 LOAD_CONST               0 (frozenset({1, 2, 3}))
              4 CONTAINS_OP              0
              6 RETURN_VALUE

AFAIK the primary advantage of doing this is that the frozenset gets created 
once instead of every time the expression is executed.  Frozenset itself is not 
faster than a regular set.

Ronald

—

Twitter / micro.blog: @ronaldoussoren
Blog: https://blog.ronaldoussoren.net/

_______________________________________________
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/GPAWWSBPPUYXUPQGSIZMD2RO3UF3HWH6/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to