Skip to content

Commit de5c854

Browse files
committed
Add SystemTextJsonGenerator
1 parent 2e619e9 commit de5c854

10 files changed

Lines changed: 173 additions & 0 deletions
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
```
2+
3+
BenchmarkDotNet v0.15.2, Windows 10 (10.0.19045.6093/22H2/2022Update)
4+
12th Gen Intel Core i7-12800HX 2.00GHz, 1 CPU, 24 logical and 16 physical cores
5+
.NET SDK 9.0.304
6+
[Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
7+
DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
8+
9+
10+
```
11+
| Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
12+
|------------------------------------- |----------:|---------:|---------:|------:|--------:|-------:|----------:|------------:|
13+
| MemoryPack | 18.89 ns | 0.127 ns | 0.119 ns | 1.00 | 0.01 | 0.0049 | 64 B | 1.00 |
14+
| MessagePackCSharp | 36.74 ns | 0.308 ns | 0.273 ns | 1.95 | 0.02 | 0.0030 | 40 B | 0.62 |
15+
| OrleansSerialize | 71.60 ns | 0.502 ns | 0.470 ns | 3.79 | 0.03 | 0.0036 | 48 B | 0.75 |
16+
| SystemTextJson | 171.18 ns | 1.574 ns | 1.473 ns | 9.06 | 0.09 | 0.0274 | 360 B | 5.62 |
17+
| SystemTextJsonGenerator | 114.91 ns | 0.696 ns | 0.651 ns | 6.08 | 0.05 | 0.0141 | 184 B | 2.88 |
18+
| | | | | | | | | |
19+
| MemoryPackBufferWriter | 20.64 ns | 0.182 ns | 0.170 ns | 1.00 | 0.01 | - | - | NA |
20+
| MessagePackBufferWriter | 42.49 ns | 0.239 ns | 0.224 ns | 2.06 | 0.02 | - | - | NA |
21+
| OrleansWriterPooledArrayBufferWriter | 49.48 ns | 0.300 ns | 0.266 ns | 2.40 | 0.02 | - | - | NA |
22+
| OrleansWriterArrayBufferWriter | 39.10 ns | 0.295 ns | 0.276 ns | 1.89 | 0.02 | - | - | NA |
23+
| SystemTextJsonBufferWriter | 119.75 ns | 0.856 ns | 0.801 ns | 5.80 | 0.06 | - | - | NA |
24+
| SystemTextJsonBufferWriterGenerator | 80.26 ns | 0.658 ns | 0.615 ns | 3.89 | 0.04 | - | - | NA |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Ratio,RatioSD,Gen0,Allocated,Alloc Ratio
2+
MemoryPack,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,18.89 ns,0.127 ns,0.119 ns,1.00,0.01,0.0049,64 B,1.00
3+
MessagePackCSharp,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,36.74 ns,0.308 ns,0.273 ns,1.95,0.02,0.0030,40 B,0.62
4+
OrleansSerialize,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,71.60 ns,0.502 ns,0.470 ns,3.79,0.03,0.0036,48 B,0.75
5+
SystemTextJson,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,171.18 ns,1.574 ns,1.473 ns,9.06,0.09,0.0274,360 B,5.62
6+
SystemTextJsonGenerator,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,114.91 ns,0.696 ns,0.651 ns,6.08,0.05,0.0141,184 B,2.88
7+
MemoryPackBufferWriter,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,20.64 ns,0.182 ns,0.170 ns,1.00,0.01,0.0000,0 B,NA
8+
MessagePackBufferWriter,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,42.49 ns,0.239 ns,0.224 ns,2.06,0.02,0.0000,0 B,NA
9+
OrleansWriterPooledArrayBufferWriter,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,49.48 ns,0.300 ns,0.266 ns,2.40,0.02,0.0000,0 B,NA
10+
OrleansWriterArrayBufferWriter,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,39.10 ns,0.295 ns,0.276 ns,1.89,0.02,0.0000,0 B,NA
11+
SystemTextJsonBufferWriter,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,119.75 ns,0.856 ns,0.801 ns,5.80,0.06,0.0000,0 B,NA
12+
SystemTextJsonBufferWriterGenerator,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,80.26 ns,0.658 ns,0.615 ns,3.89,0.04,0.0000,0 B,NA
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<!DOCTYPE html>
2+
<html lang='en'>
3+
<head>
4+
<meta charset='utf-8' />
5+
<title>MessagePackTest.ClassSerializeBenchmark-20250814-004109</title>
6+
7+
<style type="text/css">
8+
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
9+
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
10+
tr { background-color: #fff; border-top: 1px solid #ccc; }
11+
tr:nth-child(even) { background: #f8f8f8; }
12+
</style>
13+
</head>
14+
<body>
15+
<pre><code>
16+
BenchmarkDotNet v0.15.2, Windows 10 (10.0.19045.6093/22H2/2022Update)
17+
12th Gen Intel Core i7-12800HX 2.00GHz, 1 CPU, 24 logical and 16 physical cores
18+
.NET SDK 9.0.304
19+
[Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
20+
DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
21+
</code></pre>
22+
<pre><code></code></pre>
23+
24+
<table>
25+
<thead><tr><th>Method </th><th>Mean</th><th>Error</th><th>StdDev</th><th>Ratio</th><th>RatioSD</th><th>Gen0</th><th>Allocated</th><th>Alloc Ratio</th>
26+
</tr>
27+
</thead><tbody><tr><td>MemoryPack</td><td>18.89 ns</td><td>0.127 ns</td><td>0.119 ns</td><td>1.00</td><td>0.01</td><td>0.0049</td><td>64 B</td><td>1.00</td>
28+
</tr><tr><td>MessagePackCSharp</td><td>36.74 ns</td><td>0.308 ns</td><td>0.273 ns</td><td>1.95</td><td>0.02</td><td>0.0030</td><td>40 B</td><td>0.62</td>
29+
</tr><tr><td>OrleansSerialize</td><td>71.60 ns</td><td>0.502 ns</td><td>0.470 ns</td><td>3.79</td><td>0.03</td><td>0.0036</td><td>48 B</td><td>0.75</td>
30+
</tr><tr><td>SystemTextJson</td><td>171.18 ns</td><td>1.574 ns</td><td>1.473 ns</td><td>9.06</td><td>0.09</td><td>0.0274</td><td>360 B</td><td>5.62</td>
31+
</tr><tr><td>SystemTextJsonGenerator</td><td>114.91 ns</td><td>0.696 ns</td><td>0.651 ns</td><td>6.08</td><td>0.05</td><td>0.0141</td><td>184 B</td><td>2.88</td>
32+
</tr><tr><td>MemoryPackBufferWriter</td><td>20.64 ns</td><td>0.182 ns</td><td>0.170 ns</td><td>1.00</td><td>0.01</td><td>-</td><td>-</td><td>NA</td>
33+
</tr><tr><td>MessagePackBufferWriter</td><td>42.49 ns</td><td>0.239 ns</td><td>0.224 ns</td><td>2.06</td><td>0.02</td><td>-</td><td>-</td><td>NA</td>
34+
</tr><tr><td>OrleansWriterPooledArrayBufferWriter</td><td>49.48 ns</td><td>0.300 ns</td><td>0.266 ns</td><td>2.40</td><td>0.02</td><td>-</td><td>-</td><td>NA</td>
35+
</tr><tr><td>OrleansWriterArrayBufferWriter</td><td>39.10 ns</td><td>0.295 ns</td><td>0.276 ns</td><td>1.89</td><td>0.02</td><td>-</td><td>-</td><td>NA</td>
36+
</tr><tr><td>SystemTextJsonBufferWriter</td><td>119.75 ns</td><td>0.856 ns</td><td>0.801 ns</td><td>5.80</td><td>0.06</td><td>-</td><td>-</td><td>NA</td>
37+
</tr><tr><td>SystemTextJsonBufferWriterGenerator</td><td>80.26 ns</td><td>0.658 ns</td><td>0.615 ns</td><td>3.89</td><td>0.04</td><td>-</td><td>-</td><td>NA</td>
38+
</tr></tbody></table>
39+
</body>
40+
</html>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
```
2+
3+
BenchmarkDotNet v0.15.2, Windows 10 (10.0.19045.6093/22H2/2022Update)
4+
12th Gen Intel Core i7-12800HX 2.00GHz, 1 CPU, 24 logical and 16 physical cores
5+
.NET SDK 9.0.304
6+
[Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
7+
DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
8+
9+
10+
```
11+
| Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
12+
|------------------------ |----------:|---------:|---------:|------:|--------:|-------:|----------:|------------:|
13+
| MemoryPack | 17.49 ns | 0.128 ns | 0.113 ns | 1.00 | 0.01 | 0.0043 | 56 B | 1.00 |
14+
| MessagePackCSharp | 48.65 ns | 0.333 ns | 0.312 ns | 2.78 | 0.02 | 0.0042 | 56 B | 1.00 |
15+
| Orleans | 47.95 ns | 0.550 ns | 0.487 ns | 2.74 | 0.03 | 0.0042 | 56 B | 1.00 |
16+
| OrleansReader | 45.77 ns | 0.301 ns | 0.282 ns | 2.62 | 0.02 | 0.0042 | 56 B | 1.00 |
17+
| SystemTextJson | 323.23 ns | 4.782 ns | 4.473 ns | 18.48 | 0.27 | 0.0038 | 56 B | 1.00 |
18+
| SystemTextJsonGenerator | 300.46 ns | 1.988 ns | 1.860 ns | 17.18 | 0.15 | 0.0038 | 56 B | 1.00 |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Ratio,RatioSD,Gen0,Allocated,Alloc Ratio
2+
MemoryPack,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,17.49 ns,0.128 ns,0.113 ns,1.00,0.01,0.0043,56 B,1.00
3+
MessagePackCSharp,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,48.65 ns,0.333 ns,0.312 ns,2.78,0.02,0.0042,56 B,1.00
4+
Orleans,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,47.95 ns,0.550 ns,0.487 ns,2.74,0.03,0.0042,56 B,1.00
5+
OrleansReader,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,45.77 ns,0.301 ns,0.282 ns,2.62,0.02,0.0042,56 B,1.00
6+
SystemTextJson,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,323.23 ns,4.782 ns,4.473 ns,18.48,0.27,0.0038,56 B,1.00
7+
SystemTextJsonGenerator,DefaultJob,False,Default,Default,Default,Default,Default,Default,111111111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,300.46 ns,1.988 ns,1.860 ns,17.18,0.15,0.0038,56 B,1.00
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html>
2+
<html lang='en'>
3+
<head>
4+
<meta charset='utf-8' />
5+
<title>MessagePackTest.ClassDeserializeBenchmark-20250814-004351</title>
6+
7+
<style type="text/css">
8+
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
9+
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
10+
tr { background-color: #fff; border-top: 1px solid #ccc; }
11+
tr:nth-child(even) { background: #f8f8f8; }
12+
</style>
13+
</head>
14+
<body>
15+
<pre><code>
16+
BenchmarkDotNet v0.15.2, Windows 10 (10.0.19045.6093/22H2/2022Update)
17+
12th Gen Intel Core i7-12800HX 2.00GHz, 1 CPU, 24 logical and 16 physical cores
18+
.NET SDK 9.0.304
19+
[Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
20+
DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
21+
</code></pre>
22+
<pre><code></code></pre>
23+
24+
<table>
25+
<thead><tr><th>Method </th><th>Mean</th><th>Error</th><th>StdDev</th><th>Ratio</th><th>RatioSD</th><th>Gen0</th><th>Allocated</th><th>Alloc Ratio</th>
26+
</tr>
27+
</thead><tbody><tr><td>MemoryPack</td><td>17.49 ns</td><td>0.128 ns</td><td>0.113 ns</td><td>1.00</td><td>0.01</td><td>0.0043</td><td>56 B</td><td>1.00</td>
28+
</tr><tr><td>MessagePackCSharp</td><td>48.65 ns</td><td>0.333 ns</td><td>0.312 ns</td><td>2.78</td><td>0.02</td><td>0.0042</td><td>56 B</td><td>1.00</td>
29+
</tr><tr><td>Orleans</td><td>47.95 ns</td><td>0.550 ns</td><td>0.487 ns</td><td>2.74</td><td>0.03</td><td>0.0042</td><td>56 B</td><td>1.00</td>
30+
</tr><tr><td>OrleansReader</td><td>45.77 ns</td><td>0.301 ns</td><td>0.282 ns</td><td>2.62</td><td>0.02</td><td>0.0042</td><td>56 B</td><td>1.00</td>
31+
</tr><tr><td>SystemTextJson</td><td>323.23 ns</td><td>4.782 ns</td><td>4.473 ns</td><td>18.48</td><td>0.27</td><td>0.0038</td><td>56 B</td><td>1.00</td>
32+
</tr><tr><td>SystemTextJsonGenerator</td><td>300.46 ns</td><td>1.988 ns</td><td>1.860 ns</td><td>17.18</td><td>0.15</td><td>0.0038</td><td>56 B</td><td>1.00</td>
33+
</tr></tbody></table>
34+
</body>
35+
</html>

src/plugins/MessagePackTest/Benchmarks/ClassDeserializeBenchmark.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,10 @@ public int SystemTextJson()
8383
{
8484
return SumResult(JsonSerializer.Deserialize<IntClass>(_stjPayload)!);
8585
}
86+
87+
[Benchmark]
88+
public int SystemTextJsonGenerator()
89+
{
90+
return SumResult(JsonSerializer.Deserialize(_stjPayload, CustomSerializerContext.Default.IntClass)!);
91+
}
8692
}

src/plugins/MessagePackTest/Benchmarks/ClassSerializeBenchmark.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,16 @@ public int SystemTextJson()
8989
return array.Length;
9090
}
9191

92+
[Benchmark]
93+
[BenchmarkCategory(" byte[]")]
94+
public int SystemTextJsonGenerator()
95+
{
96+
JsonSerializer.Serialize(SystemTextJsonOutput, _value, CustomSerializerContext.Default.IntClass);
97+
var array = SystemTextJsonOutput.ToArray();
98+
SystemTextJsonOutput.Position = 0;
99+
return array.Length;
100+
}
101+
92102
#endregion
93103

94104
#region BufferWriter
@@ -153,5 +163,15 @@ public void SystemTextJsonBufferWriter()
153163
SystemTextJsonWriter.Reset(_arrayBufferWriter);
154164
}
155165

166+
[Benchmark]
167+
[BenchmarkCategory("BufferWriter")]
168+
public void SystemTextJsonBufferWriterGenerator()
169+
{
170+
JsonSerializer.Serialize(SystemTextJsonWriter, _value, CustomSerializerContext.Default.IntClass);
171+
SystemTextJsonWriter.Flush();
172+
_arrayBufferWriter.Clear();
173+
SystemTextJsonWriter.Reset(_arrayBufferWriter);
174+
}
175+
156176
#endregion
157177
}

src/plugins/MessagePackTest/Benchmarks/Models/IntClass.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
using MemoryPack;
22
using MessagePack;
33
using Orleans;
4+
using System.Text.Json.Serialization;
45

56
namespace MessagePackTest;
67

8+
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Default)]
9+
[JsonSerializable(typeof(IntClass))]
10+
//[JsonSerializable(typeof(int))]
11+
public sealed partial class CustomSerializerContext : JsonSerializerContext
12+
{
13+
}
14+
715
[Serializable]
816
[MemoryPackable]
917
[MessagePackObject]

src/plugins/MessagePackTest/Program.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ internal sealed class Program
99

1010
private static void Main()
1111
{
12+
//var array = new ClassSerializeBenchmark();
13+
//var r = array.SystemTextJsonGenerator();
14+
1215
_ = BenchmarkRunner.Run<ArraySerializeBenchmark>();
1316
_ = BenchmarkRunner.Run<ArrayDeserializeBenchmark>();
1417
_ = BenchmarkRunner.Run<ClassSerializeBenchmark>();

0 commit comments

Comments
 (0)