ModernUO/Projects/Server
Harley Holt be19d9aae6
fix: Optimizes Point2D by implementing ISpanFormattable (#1203)
Point2D implements a basic TryFormat function. Only a single format is supported: "(X, Y)" where X and Y are base 10 integers.

Uses recent improvements in string interpolation to write the characters to the destination without first allocating memory for boxed arguments or intermediate strings.

This is a partial solution to issue #1067. A similar solution well be implemented in other classes in Geometry if it looks promising.

Benchmarks
---
d6f8dabf3c/Program.cs

Before change:
```
BenchmarkDotNet=v0.13.2, OS=ubuntu 22.04
Intel Core i7-9700K CPU 3.60GHz (Coffee Lake), 1 CPU, 8 logical and 8 physical cores
.NET SDK=6.0.402
  [Host]     : .NET 6.0.10 (6.0.1022.47605), X64 RyuJIT AVX2
  DefaultJob : .NET 6.0.10 (6.0.1022.47605), X64 RyuJIT AVX2


|                           Method |      Mean |    Error |   StdDev |   Gen0 | Allocated |
|--------------------------------- |----------:|---------:|---------:|-------:|----------:|
|                     CallToString |  44.27 ns | 0.068 ns | 0.063 ns | 0.0063 |      40 B |
|               InterpolatedString | 110.64 ns | 0.316 ns | 0.295 ns | 0.0126 |      80 B |
| InterpolatedStringMultiplePoints | 211.36 ns | 0.349 ns | 0.326 ns | 0.0293 |     184 B |
```

After change:
```
BenchmarkDotNet=v0.13.2, OS=ubuntu 22.04
Intel Core i7-9700K CPU 3.60GHz (Coffee Lake), 1 CPU, 8 logical and 8 physical cores
.NET SDK=6.0.402
  [Host]     : .NET 6.0.10 (6.0.1022.47605), X64 RyuJIT AVX2
  DefaultJob : .NET 6.0.10 (6.0.1022.47605), X64 RyuJIT AVX2

|                           Method |      Mean |    Error |   StdDev |   Gen0 | Allocated |
|--------------------------------- |----------:|---------:|---------:|-------:|----------:|
|                     CallToString |  55.13 ns | 0.826 ns | 0.772 ns | 0.0063 |      40 B |
|               InterpolatedString |  55.73 ns | 0.954 ns | 0.892 ns | 0.0063 |      40 B |
| InterpolatedStringMultiplePoints | 105.42 ns | 0.151 ns | 0.134 ns | 0.0101 |      64 B |
```
2022-10-25 12:08:35 -07:00
..
Buffers fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Client fix: Fixes loading map and static files (#1177) 2022-09-29 16:02:41 -07:00
Collections fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Comparers fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Configuration fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
ContextMenus fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Diagnostics fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Events fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Exceptions fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
GarbageCollection fix: Adds Gen2 callback for each STArrayPool (#971) 2022-03-26 13:57:42 -07:00
Geometry fix: Optimizes Point2D by implementing ISpanFormattable (#1203) 2022-10-25 12:08:35 -07:00
Gumps fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Items fix: Removes SetTypeRef for generated code. (#1189) 2022-10-15 15:12:49 -07:00
Json fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Localization fix: Cleans up namespaces (#1069) 2022-06-15 19:52:23 -07:00
Logging fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Maps fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Menus fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Migrations fix: Adds name support for all mods (#1128) 2022-10-15 10:46:31 -07:00
Mobiles fix: Fixes NPE with resistance mods in Mobile (#1199) 2022-10-22 09:11:56 -07:00
Network fix: Removes timer error for world in initial state, and removes OPL requirement for spellbooks (#1197) 2022-10-19 02:32:04 -07:00
PropertyList fix: Fixes localization corner cases with OPL (#1050) 2022-06-12 21:17:42 -07:00
Random fix: Adds reset RNG command (#1201) 2022-10-22 14:46:23 -07:00
Regions fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Serialization fix: Adds ReadType/Write(Type) and improves type referencing (#1172) 2022-10-11 22:17:22 -07:00
Targeting fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Text fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
TileMatrix fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Timer fix: Handles timers outside of the wheels max capacity of 17yrs (#1204) 2022-10-23 20:29:18 -07:00
TimeZones fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Utilities fix: Adds ReadType/Write(Type) and improves type referencing (#1172) 2022-10-11 22:17:22 -07:00
World fix: Adds ReadType/Write(Type) and improves type referencing (#1172) 2022-10-11 22:17:22 -07:00
AssemblyHandler.cs fix: Adds ReadType/Write(Type) and improves type referencing (#1172) 2022-10-11 22:17:22 -07:00
Attributes.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
CityInfo.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Commands.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Effects.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
EventLoopTasks.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
ExpansionInfo.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Guild.cs fix: Removes SetTypeRef for generated code. (#1189) 2022-10-15 15:12:49 -07:00
HuePicker.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
IAccount.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
IEntity.cs fix: Adds ReadType/Write(Type) and improves type referencing (#1172) 2022-10-11 22:17:22 -07:00
Interfaces.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
KeywordList.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Main.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
MultiData.cs fix: Fixes loading map and static files (#1177) 2022-09-29 16:02:41 -07:00
MUO.ico Adds MUO Logo (#52) 2019-09-12 13:13:13 -07:00
Party.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Poison.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Prompt.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Race.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Sector.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
SecureTrade.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
Serial.cs fix: Use TryWrite for Serial formatting (#1205) 2022-10-23 18:17:08 -07:00
Server.csproj fix: Fixes code gen of nested classes (#1190) 2022-10-15 19:58:34 -07:00
Skills.cs fix: Fixes skill mods NPE with Skills (#1200) 2022-10-22 09:56:52 -07:00
TileData.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
TileList.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00
VirtueInfo.cs fix: Cleans up core code (#1187) 2022-10-10 21:47:08 -07:00