garnet icon indicating copy to clipboard operation
garnet copied to clipboard

Replace EnumUtils with a source generator

Open Meir017 opened this issue 1 year ago • 1 comments

Feature request type

enhancement

Is your feature request related to a problem? Please describe

The logic in the EnumUtils is heavily relying on Dictionaries for optimizing the performance of converting the description attribute of an enum value to the enum and back

Describe the solution you'd like

We could do better and have a source generator generate static methods that have a fast switch-case that will perform better than looking up in a dictionary (and in some flows having additional logic)

Describe alternatives you've considered

No response

Additional context

we could use https://github.com/andrewlock/NetEscapades.EnumGenerators (see https://andrewlock.net/netescapades-enumgenerators-a-source-generator-for-enum-performance/) which also support the Description attribute

or maybe https://www.nuget.org/packages/Microsoft.Extensions.EnumStrings but it's not clear what the state of this is due to https://github.com/dotnet/extensions/pull/4639

Meir017 avatar Aug 07 '24 10:08 Meir017

I tried the following POC for this https://gist.github.com/Meir017/076cc5d2a96e2b1b12c190f3a48befc9

it still doesn't support Flags (ex: KeySpecificationFlags.RW | KeySpecificationFlags.Access)

Meir017 avatar Aug 07 '24 17:08 Meir017