* Skip WindowsConsole StringBuilder append ANSI escape sequence intermediate string allocations
Appending InterpolatedStringHandler directly to StringBuilder skips the formatting related intermediate string allocation. This should also be usable in other console implementation but currently I have no WSL etc. setup to actually verify correct functionality.
* Add CSI_Set* and CSI_Append* comparison benchmark
* Clean up CSI_SetVsAppend benchmark
* Change benchmark names to match the method group
* Add benchmarks for potentially optimizable RuneExtensions
* Add new RuneExtensions.DecodeSurrogatePair benchmark implementation
Avoids intermediate heap array allocations which is especially nice when the rune is not surrogate pair because then array heap allocations are completely avoided.
* Enable nullable reference types in RuneExtensions
* Make RuneExtensions.MaxUnicodeCodePoint readonly
Makes sure no one can accidentally change the value. Ideally would be const value.
* Optimize RuneExtensions.DecodeSurrogatePair
* Remove duplicate Rune.GetUnicodeCategory call
* Add new RuneExtensions.IsSurrogatePair benchmark implementation
Avoids intermediate heap allocations by using stack allocated buffer.
* Optimize RuneExtensions.IsSurrogatePair
* Add RuneExtensions.GetEncodingLength tests
* Optimize RuneExtensions.GetEncodingLength
* Optimize RuneExtensions.Encode
* Print encoding name in benchmark results
* Rename variable to better match return description
* Add RuneExtensions.EncodeSurrogatePair benchmark
---------
Co-authored-by: Tig <tig@users.noreply.github.com>