Skip to content

Commit 5d27a25

Browse files
committed
Cleanup
1 parent 544bcbf commit 5d27a25

6 files changed

+33
-54
lines changed

src/StaticWebAssetsSdk/Tasks/Data/StaticWebAssetEndpointProperty.cs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public struct StaticWebAssetEndpointProperty : IComparable<StaticWebAssetEndpoin
1616
private static readonly JsonTypeInfo<StaticWebAssetEndpointProperty[]> _jsonTypeInfo =
1717
StaticWebAssetsJsonSerializerContext.Default.StaticWebAssetEndpointPropertyArray;
1818

19+
private static readonly Encoding _encoder = Encoding.UTF8;
20+
1921
// Pre-encoded property names for high-performance serialization
2022
private static readonly JsonEncodedText NamePropertyName = JsonEncodedText.Encode("Name");
2123
private static readonly JsonEncodedText ValuePropertyName = JsonEncodedText.Encode("Value");
@@ -35,12 +37,12 @@ public static void PopulateFromMetadataValue(string value, List<StaticWebAssetEn
3537

3638
// Use stack allocation to avoid heap allocation for the UTF-8 bytes on modern frameworks
3739
#if NET6_0_OR_GREATER
38-
var maxByteCount = System.Text.Encoding.UTF8.GetMaxByteCount(value.Length);
40+
var maxByteCount = _encoder.GetMaxByteCount(value.Length);
3941
Span<byte> bytes = stackalloc byte[maxByteCount];
40-
var actualByteCount = System.Text.Encoding.UTF8.GetBytes(value, bytes);
42+
var actualByteCount = _encoder.GetBytes(value, bytes);
4143
var reader = new Utf8JsonReader(bytes.Slice(0, actualByteCount));
4244
#else
43-
var bytes = System.Text.Encoding.UTF8.GetBytes(value);
45+
var bytes = _encoder.GetBytes(value);
4446
var reader = new Utf8JsonReader(bytes);
4547
#endif
4648

@@ -101,28 +103,19 @@ internal static string ToMetadataValue(
101103
var (buffer, writer) = context;
102104

103105
writer.WriteStartArray();
104-
foreach (var property in properties)
106+
for (int i = 0; i < properties.Count; i++)
105107
{
106-
writer.WriteStartObject();
107-
108-
writer.WritePropertyName(NamePropertyName);
108+
var property = properties[i];
109+
writer.WriteStartObject(NamePropertyName);
109110
writer.WriteStringValue(property.Name);
110-
111111
writer.WritePropertyName(ValuePropertyName);
112112
writer.WriteStringValue(property.Value);
113-
114113
writer.WriteEndObject();
115114
}
116115
writer.WriteEndArray();
117116
writer.Flush();
118-
119-
#if !NET6_0_OR_GREATER
120-
var (array, count) = buffer.GetArray();
121-
return System.Text.Encoding.UTF8.GetString(array, 0, count);
122-
#else
123117
var (array, count) = buffer.GetArray();
124-
return System.Text.Encoding.UTF8.GetString(array, 0, count);
125-
#endif
118+
return _encoder.GetString(array, 0, count);
126119
}
127120

128121
internal static JsonWriterContext CreateWriter()

src/StaticWebAssetsSdk/Tasks/Data/StaticWebAssetEndpointResponseHeader.cs

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public struct StaticWebAssetEndpointResponseHeader : IEquatable<StaticWebAssetEn
1616
private static readonly JsonTypeInfo<StaticWebAssetEndpointResponseHeader[]> _jsonTypeInfo =
1717
StaticWebAssetsJsonSerializerContext.Default.StaticWebAssetEndpointResponseHeaderArray;
1818

19+
private static readonly Encoding _encoder = Encoding.UTF8;
20+
1921
// Pre-encoded property names for high-performance serialization
2022
private static readonly JsonEncodedText NamePropertyName = JsonEncodedText.Encode("Name");
2123
private static readonly JsonEncodedText ValuePropertyName = JsonEncodedText.Encode("Value");
@@ -104,34 +106,24 @@ internal static string ToMetadataValue(
104106
var (buffer, writer) = context;
105107

106108
writer.WriteStartArray();
107-
foreach (var header in headers)
109+
for (int i = 0; i < headers.Count; i++)
108110
{
109-
writer.WriteStartObject();
110-
111-
writer.WritePropertyName(NamePropertyName);
111+
var header = headers[i];
112+
writer.WriteStartObject(NamePropertyName);
112113
writer.WriteStringValue(header.Name);
113-
114114
writer.WritePropertyName(ValuePropertyName);
115115
writer.WriteStringValue(header.Value);
116-
117116
writer.WriteEndObject();
118117
}
119118
writer.WriteEndArray();
120119
writer.Flush();
121-
122-
#if !NET6_0_OR_GREATER
123120
var (array, count) = buffer.GetArray();
124-
return System.Text.Encoding.UTF8.GetString(array, 0, count);
125-
#else
126-
var (array, count) = buffer.GetArray();
127-
return System.Text.Encoding.UTF8.GetString(array, 0, count);
128-
#endif
121+
return _encoder.GetString(array, 0, count);
129122
}
130123

131124
internal static JsonWriterContext CreateWriter()
132125
{
133126
var context = new JsonWriterContext();
134-
context.Reset();
135127
return context;
136128
}
137129

src/StaticWebAssetsSdk/Tasks/Data/StaticWebAssetEndpointSelector.cs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public struct StaticWebAssetEndpointSelector : IEquatable<StaticWebAssetEndpoint
1616
private static readonly JsonTypeInfo<StaticWebAssetEndpointSelector[]> _jsonTypeInfo =
1717
StaticWebAssetsJsonSerializerContext.Default.StaticWebAssetEndpointSelectorArray;
1818

19+
private static readonly Encoding _encoder = Encoding.UTF8;
20+
1921
// Pre-encoded property names for high-performance serialization
2022
private static readonly JsonEncodedText NamePropertyName = JsonEncodedText.Encode("Name");
2123
private static readonly JsonEncodedText ValuePropertyName = JsonEncodedText.Encode("Value");
@@ -111,31 +113,22 @@ internal static string ToMetadataValue(
111113
var (buffer, writer) = context;
112114

113115
writer.WriteStartArray();
114-
foreach (var selector in selectors)
116+
for (int i = 0; i < selectors.Count; i++)
115117
{
116-
writer.WriteStartObject();
117-
118-
writer.WritePropertyName(NamePropertyName);
118+
var selector = selectors[i];
119+
writer.WriteStartObject(NamePropertyName);
119120
writer.WriteStringValue(selector.Name);
120-
121121
writer.WritePropertyName(ValuePropertyName);
122122
writer.WriteStringValue(selector.Value);
123-
124123
writer.WritePropertyName(QualityPropertyName);
125124
writer.WriteStringValue(selector.Quality);
126-
127125
writer.WriteEndObject();
128126
}
129127
writer.WriteEndArray();
130128
writer.Flush();
131129

132-
#if !NET6_0_OR_GREATER
133-
var (array, count) = buffer.GetArray();
134-
return System.Text.Encoding.UTF8.GetString(array, 0, count);
135-
#else
136130
var (array, count) = buffer.GetArray();
137-
return System.Text.Encoding.UTF8.GetString(array, 0, count);
138-
#endif
131+
return _encoder.GetString(array, 0, count);
139132
}
140133

141134
internal static JsonWriterContext CreateWriter()

src/StaticWebAssetsSdk/benchmarks/StaticWebAssetEndpointPropertyBenchmarks.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33

44
using BenchmarkDotNet.Attributes;
55
using Microsoft.AspNetCore.StaticWebAssets.Tasks;
6-
using System.Buffers;
7-
using System.Text.Json;
6+
using Microsoft.NET.Sdk.StaticWebAssets.Tasks.Utils;
87

98
namespace Microsoft.NET.Sdk.StaticWebAssets.Benchmarks;
109

@@ -16,17 +15,15 @@ public class StaticWebAssetEndpointPropertyBenchmarks
1615
private readonly List<StaticWebAssetEndpointProperty> _properties = [];
1716
private readonly StaticWebAssetEndpointProperty[] _propertiesArray;
1817
private readonly List<StaticWebAssetEndpointProperty> _propertiesList;
19-
20-
private readonly PooledArrayBufferWriter<byte> _buffer;
21-
22-
private readonly Utf8JsonWriter _writer;
18+
private readonly JsonWriterContext _context;
2319

2420
public StaticWebAssetEndpointPropertyBenchmarks()
2521
{
2622
// Initialize test data for ToMetadataValue benchmarks
2723
_propertiesArray = StaticWebAssetEndpointProperty.FromMetadataValue(TestValue);
2824
_propertiesList = new List<StaticWebAssetEndpointProperty>(_propertiesArray);
29-
(_buffer, _writer) = StaticWebAssetEndpointProperty.CreateWriter();
25+
_context = StaticWebAssetEndpointProperty.CreateWriter();
26+
_context.Reset();
3027
}
3128

3229
[Benchmark]
@@ -52,7 +49,6 @@ public string ToMetadataValue_Current()
5249
[Benchmark]
5350
public string ToMetadataValue_New()
5451
{
55-
_buffer.Clear();
56-
return StaticWebAssetEndpointProperty.ToMetadataValue(_propertiesList, _buffer, _writer);
52+
return StaticWebAssetEndpointProperty.ToMetadataValue(_propertiesList, _context);
5753
}
5854
}

src/StaticWebAssetsSdk/benchmarks/StaticWebAssetEndpointResponseHeaderBenchmarks.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using BenchmarkDotNet.Attributes;
55
using Microsoft.AspNetCore.StaticWebAssets.Tasks;
6+
using Microsoft.NET.Sdk.StaticWebAssets.Tasks.Utils;
67

78
namespace Microsoft.NET.Sdk.StaticWebAssets.Benchmarks;
89

@@ -14,14 +15,15 @@ public class StaticWebAssetEndpointResponseHeaderBenchmarks
1415
private readonly List<StaticWebAssetEndpointResponseHeader> _headers = [];
1516
private readonly StaticWebAssetEndpointResponseHeader[] _headersArray;
1617
private readonly List<StaticWebAssetEndpointResponseHeader> _headersList;
17-
private readonly StaticWebAssetEndpointResponseHeader.JsonWriterContext _context;
18+
private readonly JsonWriterContext _context;
1819

1920
public StaticWebAssetEndpointResponseHeaderBenchmarks()
2021
{
2122
// Initialize test data for ToMetadataValue benchmarks
2223
_headersArray = StaticWebAssetEndpointResponseHeader.FromMetadataValue(TestValue);
2324
_headersList = new List<StaticWebAssetEndpointResponseHeader>(_headersArray);
2425
_context = StaticWebAssetEndpointResponseHeader.CreateWriter();
26+
_context.Reset();
2527
}
2628

2729
[Benchmark]

src/StaticWebAssetsSdk/benchmarks/StaticWebAssetEndpointSelectorBenchmarks.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
using BenchmarkDotNet.Attributes;
55
using Microsoft.AspNetCore.StaticWebAssets.Tasks;
66

7+
using Microsoft.NET.Sdk.StaticWebAssets.Tasks.Utils;
8+
79
namespace Microsoft.NET.Sdk.StaticWebAssets.Benchmarks;
810

911
[MemoryDiagnoser]
@@ -14,14 +16,15 @@ public class StaticWebAssetEndpointSelectorBenchmarks
1416
private readonly List<StaticWebAssetEndpointSelector> _selectors = [];
1517
private readonly StaticWebAssetEndpointSelector[] _selectorsArray;
1618
private readonly List<StaticWebAssetEndpointSelector> _selectorsList;
17-
private readonly StaticWebAssetEndpointSelector.JsonWriterContext _context;
19+
private readonly JsonWriterContext _context;
1820

1921
public StaticWebAssetEndpointSelectorBenchmarks()
2022
{
2123
// Initialize test data for ToMetadataValue benchmarks
2224
_selectorsArray = StaticWebAssetEndpointSelector.FromMetadataValue(TestValue);
2325
_selectorsList = new List<StaticWebAssetEndpointSelector>(_selectorsArray);
2426
_context = StaticWebAssetEndpointSelector.CreateWriter();
27+
_context.Reset();
2528
}
2629

2730
[Benchmark]

0 commit comments

Comments
 (0)