Feature or enhancement
Proposal:
Many cases of frozenset look like this:
xyz = frozenset({1, 2, 3})
Currently, this constructs a new frozenset and copies the set object created by the literal. We can optimize this by detecting that it's a set literal via PyUnstable_Object_IsUniqueReferencedTemporary, and then simply move the mutable set 's memory into the frozenset without a copy.
Additionally, we have some optimizations for generator expressions inside sets. For example, this will be optimized by the compiler into some bytecode magic:
xyz = set((index for index in range(5))
We can extend this optimization to frozensets as well.
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
Linked PRs
Feature or enhancement
Proposal:
Many cases of
frozensetlook like this:Currently, this constructs a new frozenset and copies the set object created by the literal. We can optimize this by detecting that it's a set literal via
PyUnstable_Object_IsUniqueReferencedTemporary, and then simply move the mutableset's memory into thefrozensetwithout a copy.Additionally, we have some optimizations for generator expressions inside sets. For example, this will be optimized by the compiler into some bytecode magic:
We can extend this optimization to
frozensets as well.Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
Linked PRs
frozensetobjects #150028