-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathSerializeTest.cs
160 lines (131 loc) · 5.3 KB
/
SerializeTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using JsonPerformanceTest.Models;
using Newtonsoft.Json;
namespace JsonPerformanceTest
{
class SerializeTest
{
static System.Text.Json.JsonParser jp = new JsonParser();
public static void DoTests()
{
//Monitors2 is being loaded the same way, but will serialize differently since it is Monitor2
//It has the field aliases
var monitors = JsonConvert.DeserializeObject<List<Monitor>>(EmbeddedJson.MonitorRecords);
//Deserializing with this parser since it ignores the column names.
var monitors2 = jp.Parse<List<Monitor2>>(EmbeddedJson.MonitorRecords);
ServiceStackTest(monitors);
ServiceStackMiniTest(monitors2);
NewtonsoftTest(monitors);
NewtonsoftGenericTest();
NewtonsoftTestMini(monitors2);
DataContractSerializerTest(monitors);
}
public static void ServiceStackTest(object toSerialize)
{
ServiceStack.Text.JsonSerializer.SerializeToString(toSerialize);
ServiceStack.Text.JsonSerializer.SerializeToString(toSerialize);
ServiceStack.Text.JsonSerializer.SerializeToString(toSerialize);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 25000; i++)
{
var json = ServiceStack.Text.JsonSerializer.SerializeToString(toSerialize);
}
sw.Stop();
Debug.WriteLine("ServiceStack serialize " + sw.ElapsedMilliseconds + "ms");
}
public static void ServiceStackMiniTest(object toSerialize)
{
var test = ServiceStack.Text.JsonSerializer.SerializeToString(toSerialize);
ServiceStack.Text.JsonSerializer.SerializeToString(toSerialize);
ServiceStack.Text.JsonSerializer.SerializeToString(toSerialize);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 25000; i++)
{
var json = ServiceStack.Text.JsonSerializer.SerializeToString(toSerialize);
}
sw.Stop();
Debug.WriteLine("ServiceStackMini serialize " + sw.ElapsedMilliseconds + "ms");
}
public static void NewtonsoftGenericTest()
{
var toSerialize = JsonConvert.DeserializeObject(EmbeddedJson.MonitorRecords);
JsonConvert.SerializeObject(toSerialize);
JsonConvert.SerializeObject(toSerialize);
JsonConvert.SerializeObject(toSerialize);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 25000; i++)
{
var json = JsonConvert.SerializeObject(toSerialize);
}
sw.Stop();
Debug.WriteLine("NewtonsoftGeneric serialize " + sw.ElapsedMilliseconds + "ms");
}
public static void NewtonsoftTest(object toSerialize)
{
JsonConvert.SerializeObject(toSerialize);
JsonConvert.SerializeObject(toSerialize);
JsonConvert.SerializeObject(toSerialize);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 25000; i++)
{
var json = JsonConvert.SerializeObject(toSerialize);
}
sw.Stop();
Debug.WriteLine("Newtonsoft serialize " + sw.ElapsedMilliseconds + "ms");
}
public static void NewtonsoftTestMini(object toSerialize)
{
JsonConvert.SerializeObject(toSerialize);
JsonConvert.SerializeObject(toSerialize);
JsonConvert.SerializeObject(toSerialize);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 25000; i++)
{
var json = JsonConvert.SerializeObject(toSerialize);
}
sw.Stop();
Debug.WriteLine("NewtonsoftTestMini serialize " + sw.ElapsedMilliseconds + "ms");
}
public static void DataContractSerializerTest(object toSerialize)
{
DataContractSerializerDoIt(toSerialize);
DataContractSerializerDoIt(toSerialize);
DataContractSerializerDoIt(toSerialize);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 25000; i++)
{
DataContractSerializerDoIt(toSerialize);
}
sw.Stop();
Debug.WriteLine("DataContractJson serialize " + sw.ElapsedMilliseconds + "ms");
}
public static string DataContractSerializerDoIt(object toSerialize)
{
string json;
using (MemoryStream stream1 = new MemoryStream())
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<Monitor>));
ser.WriteObject(stream1, toSerialize);
stream1.Position = 0;
StreamReader sr = new StreamReader(stream1);
json = sr.ReadToEnd();
sr.Close();
}
return json;
}
}
}