Skip to content

Commit d79a9a7

Browse files
perf: switch typeSb to use ValueStringBuilder
1 parent 315e744 commit d79a9a7

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

TUnit.Engine/Services/TestIdentifierService.cs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -89,44 +89,41 @@ private static void WriteTypeNameWithGenerics(ref ValueStringBuilder vsb, Type t
8989
{
9090
// Build the full type hierarchy including all containing types
9191
var typeHierarchy = new ValueListBuilder<string>([null, null, null, null]);
92+
var typeVsb = new ValueStringBuilder(stackalloc char[128]);
9293
var currentType = type;
9394

9495
while (currentType != null)
9596
{
9697
if (currentType.IsGenericType)
9798
{
98-
var typeSb = new StringBuilder();
9999
var name = currentType.Name;
100100

101101
var backtickIndex = name.IndexOf('`');
102102
if (backtickIndex > 0)
103103
{
104-
#if NET6_0_OR_GREATER
105-
typeSb.Append(name.AsSpan(0, backtickIndex));
106-
#else
107-
typeSb.Append(name.Substring(0, backtickIndex));
108-
#endif
104+
typeVsb.Append(name.AsSpan(0, backtickIndex));
109105
}
110106
else
111107
{
112-
typeSb.Append(name);
108+
typeVsb.Append(name);
113109
}
114110

115111
// Add the generic type arguments
116112
var genericArgs = currentType.GetGenericArguments();
117-
typeSb.Append('<');
113+
typeVsb.Append('<');
118114
for (var i = 0; i < genericArgs.Length; i++)
119115
{
120116
if (i > 0)
121117
{
122-
typeSb.Append(", ");
118+
typeVsb.Append(", ");
123119
}
124120
// Use the full name for generic arguments to ensure uniqueness
125-
typeSb.Append(genericArgs[i].FullName ?? genericArgs[i].Name);
121+
typeVsb.Append(genericArgs[i].FullName ?? genericArgs[i].Name);
126122
}
127-
typeSb.Append('>');
123+
typeVsb.Append('>');
128124

129-
typeHierarchy.Append(typeSb.ToString());
125+
typeHierarchy.Append(typeVsb.AsSpan().ToString());
126+
typeVsb.Length = 0;
130127
}
131128
else
132129
{
@@ -147,6 +144,7 @@ private static void WriteTypeNameWithGenerics(ref ValueStringBuilder vsb, Type t
147144
vsb.Append(typeHierarchy[i]);
148145
}
149146
typeHierarchy.Dispose();
147+
typeVsb.Dispose();
150148
}
151149

152150
private static void WriteTypeWithParameters(ref ValueStringBuilder vsb, ReadOnlySpan<ParameterMetadata> parameterTypes)

0 commit comments

Comments
 (0)