fix: Streamlines gump compilation (#969)

Changes gump compilation to use string interpolation. .NET 6 uses code generation and compile time tricks to speed up string interpolation between 15 and 30% and reduce allocations dramatically.
This commit is contained in:
Kamron Batman 2022-03-22 23:46:10 -07:00 • committed by GitHub
parent 14b63ca48e
commit c166e113b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 853 additions and 2258 deletions

View file

@ -1,32 +1,29 @@
using System.Buffers;
using Server.Collections;
namespace Server.Gumps
namespace Server.Gumps;
public abstract class GumpEntry
{
public abstract class GumpEntry
private Gump m_Parent;
public Gump Parent
{
private Gump m_Parent;
public Gump Parent
get => m_Parent;
set
{
get => m_Parent;
set
if (m_Parent != value)
{
if (m_Parent != value)
{
m_Parent?.Remove(this);
m_Parent?.Remove(this);
m_Parent = value;
m_Parent = value;
m_Parent?.Add(this);
}
m_Parent?.Add(this);
}
}
public abstract string Compile(OrderedHashSet<string> strings);
// TODO: Replace OrderedHashSet with InsertOnlyHashSet, a copy of HashSet that is ReadOnly compatible, but includes
// a public AddIfNotPresent function that returns the index of the element
public abstract void AppendTo(ref SpanWriter writer, OrderedHashSet<string> strings, ref int entries, ref int switches);
}
// TODO: Replace OrderedHashSet with InsertOnlyHashSet, a copy of HashSet that is ReadOnly compatible, but includes
// a public AddIfNotPresent function that returns the index of the element
public abstract void AppendTo(ref SpanWriter writer, OrderedHashSet<string> strings, ref int entries, ref int switches);
}