Improve yaml export performance

This commit is contained in:
ds5678 2025-06-29 00:05:31 -07:00
parent 7b1c20c1f3
commit f0c7ccb128
4 changed files with 10 additions and 9 deletions

View File

@ -85,8 +85,9 @@ public sealed class YamlSequenceNode : YamlNode
base.Emit(emitter);
StartChildren(emitter);
foreach (YamlNode child in Children)
for (int i = 0; i < Children.Count; i++)
{
YamlNode child = Children[i];
StartChild(emitter, child);
child.Emit(emitter);
EndChild(emitter, child);

View File

@ -9,9 +9,9 @@ public abstract partial class YamlScalarNode
private protected override void EmitCore(Emitter emitter)
{
Span<char> buffer = stackalloc char[ReverseHexString.GetHexStringLength<byte>()];
foreach (bool value in list)
for (int i = 0; i < list.Count; i++)
{
byte b = value ? (byte)1 : (byte)0;
byte b = list[i] ? (byte)1 : (byte)0;
ReverseHexString.WriteReverseHexString(b, buffer);
emitter.Write(buffer);
}

View File

@ -9,9 +9,9 @@ public abstract partial class YamlScalarNode
private protected override void EmitCore(Emitter emitter)
{
Span<char> buffer = stackalloc char[ReverseHexString.GetHexStringLength<ushort>()];
foreach (char value in list)
for (int i = 0; i < list.Count; i++)
{
ReverseHexString.WriteReverseHexString((ushort)value, buffer);
ReverseHexString.WriteReverseHexString((ushort)list[i], buffer);
emitter.Write(buffer);
}
}

View File

@ -10,9 +10,9 @@ public abstract partial class YamlScalarNode
private protected override void EmitCore(Emitter emitter)
{
Span<char> buffer = stackalloc char[ReverseHexString.GetHexStringLength<T>()];
foreach (T value in list)
for (int i = 0; i < list.Count; i++)
{
ReverseHexString.WriteReverseHexString(value, buffer);
ReverseHexString.WriteReverseHexString(list[i], buffer);
emitter.Write(buffer);
}
}
@ -23,9 +23,9 @@ public abstract partial class YamlScalarNode
{
StringWriter sb = new();
Span<char> buffer = stackalloc char[ReverseHexString.GetHexStringLength<T>()];
foreach (T value in list)
for (int i = 0; i < list.Count; i++)
{
ReverseHexString.WriteReverseHexString(value, buffer);
ReverseHexString.WriteReverseHexString(list[i], buffer);
sb.Write(buffer);
}
return sb.ToString();