-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add specialized FrozenSet implementations for byte and char #110842
base: main
Are you sure you want to change the base?
Conversation
src/libraries/System.Collections.Immutable/src/System/Collections/Frozen/Byte/ByteFrozenSet.cs
Outdated
Show resolved
Hide resolved
src/libraries/System.Private.CoreLib/src/System/SearchValues/BitVector256.cs
Show resolved
Hide resolved
src/libraries/System.Private.CoreLib/src/System/SearchValues/ProbabilisticMapState.cs
Show resolved
Hide resolved
.../System.Collections.Immutable/src/System/Collections/Frozen/Char/PerfectHashCharFrozenSet.cs
Show resolved
Hide resolved
cc: @dotnet/area-system-collections (the bot was lazy) |
Can you point to some places where |
Should be similar to As a random example, here's one in Uri, though we could of course use
My main motivation was making the answer to "what should I use for |
Fixes #110783
Adds 3 new
FrozenSet
imlpementations:ByteFrozenSet
- any set of bytes when using the default comparerLatin1CharFrozenSet
- set of chars <= 255 when using the default comparerPerfectHashCharFrozenSet
- any set of chars when using the default comparerI extracted the lookup logic from
ProbabilisticMapState
inSearchValues
to a searate helper so that there's practically no code duplication between the two.Benchmark
char.IsSymbol
(Latin1CharFrozenSet
)char.IsAscii && char.IsSymbol
(PerfectHashCharFrozenSet
)char.IsSymbol
forbyte
s (ByteFrozenSet
)