1
+ using System ;
2
+ using System . IO ;
3
+ using System . Text ;
4
+ using NUnit . Framework ;
5
+ using ServiceStack . Text . Json ;
6
+ using ServiceStack . Text . Tests . DynamicModels ;
7
+
8
+ namespace ServiceStack . Text . Tests . Benchmarks
9
+ {
10
+ public class JsonSerializationBenchmarks
11
+ {
12
+ static ModelWithAllTypes allTypesModel = ModelWithAllTypes . Create ( 3 ) ;
13
+ static ModelWithCommonTypes commonTypesModel = ModelWithCommonTypes . Create ( 3 ) ;
14
+ static MemoryStream stream = new MemoryStream ( 32768 ) ;
15
+ const string serializedString = "this is the test string" ;
16
+ readonly string serializedString256 = new string ( 't' , 256 ) ;
17
+ readonly string serializedString512 = new string ( 't' , 512 ) ;
18
+ readonly string serializedString4096 = new string ( 't' , 4096 ) ;
19
+
20
+ [ Test ]
21
+ public void SerializeJsonAllTypes ( )
22
+ {
23
+ string result = JsonSerializer . SerializeToString < ModelWithAllTypes > ( allTypesModel ) ;
24
+ }
25
+
26
+ [ Test ]
27
+ public void SerializeJsonCommonTypes ( )
28
+ {
29
+ string result = JsonSerializer . SerializeToString < ModelWithCommonTypes > ( commonTypesModel ) ;
30
+ }
31
+
32
+ [ Test ]
33
+ public void SerializeJsonString ( )
34
+ {
35
+ string result = JsonSerializer . SerializeToString < string > ( serializedString ) ;
36
+ }
37
+
38
+ [ Test ]
39
+ public void SerializeJsonStringToStream ( )
40
+ {
41
+ stream . Position = 0 ;
42
+ JsonSerializer . SerializeToStream < string > ( serializedString , stream ) ;
43
+ }
44
+
45
+ [ Test ]
46
+ public void SerializeJsonString256ToStream ( )
47
+ {
48
+ stream . Position = 0 ;
49
+ JsonSerializer . SerializeToStream < string > ( serializedString256 , stream ) ;
50
+ }
51
+
52
+ [ Test ]
53
+ public void SerializeJsonString512ToStream ( )
54
+ {
55
+ stream . Position = 0 ;
56
+ JsonSerializer . SerializeToStream < string > ( serializedString512 , stream ) ;
57
+ }
58
+
59
+ [ Test ]
60
+ public void SerializeJsonString4096ToStream ( )
61
+ {
62
+ stream . Position = 0 ;
63
+ JsonSerializer . SerializeToStream < string > ( serializedString4096 , stream ) ;
64
+ }
65
+
66
+ [ Test ]
67
+ public void SerializeJsonStringToStreamDirectly ( )
68
+ {
69
+ stream . Position = 0 ;
70
+ string tmp = JsonSerializer . SerializeToString < string > ( serializedString ) ;
71
+ byte [ ] arr = Encoding . UTF8 . GetBytes ( tmp ) ;
72
+ stream . Write ( arr , 0 , arr . Length ) ;
73
+ }
74
+
75
+
76
+ [ Test ]
77
+ public void SerializeJsonAllTypesToStream ( )
78
+ {
79
+ stream . Position = 0 ;
80
+ JsonSerializer . SerializeToStream < ModelWithAllTypes > ( allTypesModel , stream ) ;
81
+ }
82
+
83
+ [ Test ]
84
+ public void SerializeJsonCommonTypesToStream ( )
85
+ {
86
+ stream . Position = 0 ;
87
+ JsonSerializer . SerializeToStream < ModelWithCommonTypes > ( commonTypesModel , stream ) ;
88
+ }
89
+
90
+ [ Test ]
91
+ public void SerializeJsonStringToStreamUsingDirectStreamWriter ( )
92
+ {
93
+ stream . Position = 0 ;
94
+ var writer = new DirectStreamWriter ( stream , JsonSerializer . UTF8Encoding ) ;
95
+ JsonWriter < string > . WriteRootObject ( writer , serializedString ) ;
96
+ writer . Flush ( ) ;
97
+ }
98
+
99
+ [ Test ]
100
+ public void SerializeJsonString256ToStreamUsingDirectStreamWriter ( )
101
+ {
102
+ stream . Position = 0 ;
103
+ var writer = new DirectStreamWriter ( stream , JsonSerializer . UTF8Encoding ) ;
104
+ JsonWriter < string > . WriteRootObject ( writer , serializedString256 ) ;
105
+ writer . Flush ( ) ;
106
+ }
107
+
108
+ [ Test ]
109
+ public void SerializeJsonString512ToStreamUsingDirectStreamWriter ( )
110
+ {
111
+ stream . Position = 0 ;
112
+ var writer = new DirectStreamWriter ( stream , JsonSerializer . UTF8Encoding ) ;
113
+ JsonWriter < string > . WriteRootObject ( writer , serializedString512 ) ;
114
+ writer . Flush ( ) ;
115
+ }
116
+
117
+ [ Test ]
118
+ public void SerializeJsonString4096ToStreamUsingDirectStreamWriter ( )
119
+ {
120
+ stream . Position = 0 ;
121
+ var writer = new DirectStreamWriter ( stream , JsonSerializer . UTF8Encoding ) ;
122
+ JsonWriter < string > . WriteRootObject ( writer , serializedString4096 ) ;
123
+ writer . Flush ( ) ;
124
+ }
125
+ }
126
+ }
0 commit comments