private void TestWriterToReader(JsonToken[] tokens) { IJsonWriter jsonWriter = JsonWriter.Create(JsonSerializationFormat.Text); JsonPerfMeasurement.MeasureWritePerformance(tokens, jsonWriter); string writerResults = Encoding.UTF8.GetString(jsonWriter.GetResult().ToArray()); IJsonReader jsonReader = JsonReader.Create(Encoding.UTF8.GetBytes(writerResults)); JsonToken[] tokenArrayFromReader = JsonPerfMeasurement.Tokenize(jsonReader, writerResults); tokenArrayFromReader.SequenceEqual(tokens); }
public static void MeasurePerf(string json, string filename, int numberOfIterations = 1) { byte[] utf8ByteArray = Encoding.UTF8.GetBytes(json); // Text TimeSpan textReaderTime = JsonPerfMeasurement.MeasureReadPerformance( JsonReader.Create(utf8ByteArray), numberOfIterations); TimeSpan textWriterTime = JsonPerfMeasurement.MeasureWritePerformance( JsonWriter.Create(JsonSerializationFormat.Text), json, numberOfIterations); TimeSpan textNavigatorTime = JsonPerfMeasurement.MeasureNavigationPerformance( JsonNavigator.Create(utf8ByteArray), numberOfIterations); JsonExecutionTimes textExecutionTimes = new JsonExecutionTimes( textReaderTime, textWriterTime, textNavigatorTime, utf8ByteArray.Length, "Text"); // Newtonsoft TimeSpan newtonsoftReaderTime = JsonPerfMeasurement.MeasureReadPerformance( NewtonsoftToCosmosDBReader.CreateFromString(json), numberOfIterations); TimeSpan newtonsoftWriterTime = JsonPerfMeasurement.MeasureWritePerformance( NewtonsoftToCosmosDBWriter.CreateTextWriter(), json, numberOfIterations); TimeSpan newtonsoftNavigatorTime = JsonPerfMeasurement.MeasureNavigationPerformance( new JsonNewtonsoftNavigator(json), numberOfIterations); JsonExecutionTimes newtonsoftExecutionTimes = new JsonExecutionTimes( newtonsoftReaderTime, newtonsoftWriterTime, newtonsoftNavigatorTime, json.Length, "Newtonsoft"); // Binary byte[] binaryPayload = JsonTestUtils.ConvertTextToBinary(json); TimeSpan binaryReaderTime = JsonPerfMeasurement.MeasureReadPerformance( JsonReader.Create(binaryPayload), numberOfIterations); TimeSpan binarytWriterTime = JsonPerfMeasurement.MeasureWritePerformance( JsonWriter.Create(JsonSerializationFormat.Binary), json, numberOfIterations); TimeSpan binaryNavigatorTime = JsonPerfMeasurement.MeasureNavigationPerformance( JsonNavigator.Create(binaryPayload), numberOfIterations); JsonExecutionTimes binaryExecutionTimes = new JsonExecutionTimes( binaryReaderTime, binarytWriterTime, binaryNavigatorTime, binaryPayload.Length, "Binary"); JsonPerfMeasurement.PrintStatisticsTable( filename, textExecutionTimes, newtonsoftExecutionTimes, binaryExecutionTimes); }
public static TimeSpan MeasureWritePerformance(IJsonWriter jsonWriter, string json, int numberOfIterations = 1) { JsonToken[] tokens = JsonPerfMeasurement.Tokenize(json); return(JsonPerfMeasurement.MeasureWritePerformance(tokens, jsonWriter, numberOfIterations)); }