@@ -9,6 +9,8 @@ namespace LibSample
99{
1010 class SerializerBenchmark
1111 {
12+ const int LoopLength = 100000 ;
13+
1214 [ Serializable ] //Just for test binary formatter
1315 private struct SampleNetSerializable : INetSerializable
1416 {
@@ -90,11 +92,43 @@ public static SomeVector2 Deserialize(NetDataReader reader)
9092 }
9193 }
9294
95+ private void NetSerializerTest ( NetSerializer serializer , NetDataWriter netDataWriter , Stopwatch stopwatch , SamplePacket samplePacket )
96+ {
97+ netDataWriter . Reset ( ) ;
98+ stopwatch . Restart ( ) ;
99+ for ( int i = 0 ; i < LoopLength ; i ++ )
100+ serializer . Serialize ( netDataWriter , samplePacket ) ;
101+ stopwatch . Stop ( ) ;
102+ Console . WriteLine ( $ "NetSerializer time: { stopwatch . ElapsedMilliseconds } ms, size: { netDataWriter . Length / LoopLength } bytes") ;
103+ }
104+
105+ private void DataWriterTest ( NetDataWriter netDataWriter , Stopwatch stopwatch , SamplePacket samplePacket )
106+ {
107+ netDataWriter . Reset ( ) ;
108+ stopwatch . Restart ( ) ;
109+ for ( int i = 0 ; i < LoopLength ; i ++ )
110+ {
111+ netDataWriter . Put ( samplePacket . SomeString ) ;
112+ netDataWriter . Put ( samplePacket . SomeFloat ) ;
113+ netDataWriter . PutArray ( samplePacket . SomeIntArray ) ;
114+ SomeVector2 . Serialize ( netDataWriter , samplePacket . SomeVector2 ) ;
115+ netDataWriter . Put ( ( ushort ) samplePacket . SomeVectors . Length ) ;
116+ for ( int j = 0 ; j < samplePacket . SomeVectors . Length ; j ++ )
117+ {
118+ SomeVector2 . Serialize ( netDataWriter , samplePacket . SomeVectors [ j ] ) ;
119+ }
120+ netDataWriter . Put ( samplePacket . EmptyString ) ;
121+ netDataWriter . Put ( samplePacket . TestObj ) ;
122+ }
123+ stopwatch . Stop ( ) ;
124+ Console . WriteLine ( $ "Raw time: { stopwatch . ElapsedMilliseconds } ms, size: { netDataWriter . Length / LoopLength } bytes") ;
125+ }
126+
93127 public void Run ( )
94128 {
95129 Console . WriteLine ( "=== Serializer benchmark ===" ) ;
96130
97- const int LoopLength = 100000 ;
131+
98132 //Test serializer performance
99133 Stopwatch stopwatch = new Stopwatch ( ) ;
100134 BinaryFormatter binaryFormatter = new BinaryFormatter ( ) ;
@@ -114,7 +148,7 @@ public void Run()
114148 samplePacket . SomeVectors [ i ] = new SomeVector2 ( i , i ) ;
115149 }
116150
117- NetSerializer netSerializer = new NetSerializer ( ) ;
151+ var netSerializer = new NetSerializer ( ) ;
118152 netSerializer . RegisterNestedType < SampleNetSerializable > ( ) ;
119153 netSerializer . RegisterNestedType ( SomeVector2 . Serialize , SomeVector2 . Deserialize ) ;
120154
@@ -127,52 +161,21 @@ public void Run()
127161 //Test binary formatter
128162 stopwatch . Start ( ) ;
129163 for ( int i = 0 ; i < LoopLength ; i ++ )
130- {
131164 binaryFormatter . Serialize ( memoryStream , samplePacket ) ;
132- }
133165 stopwatch . Stop ( ) ;
134166 Console . WriteLine ( "BinaryFormatter time: " + stopwatch . ElapsedMilliseconds + " ms" ) ;
167+ Console . WriteLine ( "BinaryFormatter size: " + memoryStream . Position / LoopLength ) ;
135168
136- //Test NetSerializer
137- stopwatch . Restart ( ) ;
138- for ( int i = 0 ; i < LoopLength ; i ++ )
139- {
140- netSerializer . Serialize ( netDataWriter , samplePacket ) ;
141- }
142- stopwatch . Stop ( ) ;
143- Console . WriteLine ( "NetSerializer first run time: " + stopwatch . ElapsedMilliseconds + " ms" ) ;
169+ DataWriterTest ( netDataWriter , stopwatch , samplePacket ) ;
170+ NetSerializerTest ( netSerializer , netDataWriter , stopwatch , samplePacket ) ;
144171
145- //Test NetSerializer
146- netDataWriter . Reset ( ) ;
147- stopwatch . Restart ( ) ;
148- for ( int i = 0 ; i < LoopLength ; i ++ )
149- {
150- netSerializer . Serialize ( netDataWriter , samplePacket ) ;
151- }
152- stopwatch . Stop ( ) ;
153- Console . WriteLine ( "NetSerializer second run time: " + stopwatch . ElapsedMilliseconds + " ms" ) ;
172+ DataWriterTest ( netDataWriter , stopwatch , samplePacket ) ;
173+ NetSerializerTest ( netSerializer , netDataWriter , stopwatch , samplePacket ) ;
154174
155- //Test RAW
156- netDataWriter . Reset ( ) ;
157- stopwatch . Restart ( ) ;
158- for ( int i = 0 ; i < LoopLength ; i ++ )
159- {
160- netDataWriter . Put ( samplePacket . SomeFloat ) ;
161- netDataWriter . Put ( samplePacket . SomeString ) ;
162- netDataWriter . PutArray ( samplePacket . SomeIntArray ) ;
163- netDataWriter . Put ( samplePacket . SomeVector2 . X ) ;
164- netDataWriter . Put ( samplePacket . SomeVector2 . Y ) ;
165- netDataWriter . Put ( samplePacket . SomeVectors . Length ) ;
166- for ( int j = 0 ; j < samplePacket . SomeVectors . Length ; j ++ )
167- {
168- netDataWriter . Put ( samplePacket . SomeVectors [ j ] . X ) ;
169- netDataWriter . Put ( samplePacket . SomeVectors [ j ] . Y ) ;
170- }
171- netDataWriter . Put ( samplePacket . EmptyString ) ;
172- netDataWriter . Put ( samplePacket . TestObj . Value ) ;
173- }
174- stopwatch . Stop ( ) ;
175- Console . WriteLine ( "DataWriter (raw put method calls) time: " + stopwatch . ElapsedMilliseconds + " ms" ) ;
175+ DataWriterTest ( netDataWriter , stopwatch , samplePacket ) ;
176+ NetSerializerTest ( netSerializer , netDataWriter , stopwatch , samplePacket ) ;
177+
178+ Console . ReadKey ( ) ;
176179 }
177180 }
178181}
0 commit comments