Improve Enum.ToString perf for [Flags] enums (dotnet/coreclr#21254)
authorStephen Toub <stoub@microsoft.com>
Thu, 29 Nov 2018 04:04:08 +0000 (23:04 -0500)
committerJan Kotas <jkotas@microsoft.com>
Thu, 29 Nov 2018 04:04:08 +0000 (20:04 -0800)
commit8cfbf28f0c0b46beb183d7c178a8bfb9be18d642
treef56ab20a6ee53bad7e663added1531336d7081e3
parent03754cacc9046d9dfcf26d19fa53208cf987084d
Improve Enum.ToString perf for [Flags] enums (dotnet/coreclr#21254)

Two main changes:
- Rather than using a StringBuilder to insert the strings for all of the consistuent values, we track the constituent values in a span, summing the expected length, and then new up a string and copy the results directly into it.
- When there's a single value that matches the supplied value, we just return the cached string rather than allocating a new one.

Commit migrated from https://github.com/dotnet/coreclr/commit/effe7cafdb828fc90ec7bbd09ae8b3c259a76eb0
src/coreclr/src/System.Private.CoreLib/src/System/Enum.cs