Beispiel #1
0
        public void ExecuteWriteMicroBenchmark(
            NamedWriteDelegate namedWriteDelegate,
            BenchmarkSerializationFormat benchmarkSerializationFormat)
        {
            IJsonWriter jsonWriter;

            switch (benchmarkSerializationFormat)
            {
            case BenchmarkSerializationFormat.Text:
                jsonWriter = JsonWriter.Create(JsonSerializationFormat.Text);
                break;

            case BenchmarkSerializationFormat.Binary:
                jsonWriter = JsonWriter.Create(JsonSerializationFormat.Binary);
                break;

            case BenchmarkSerializationFormat.Newtonsoft:
                jsonWriter = NewtonsoftToCosmosDBWriter.CreateTextWriter();
                break;

            default:
                throw new ArgumentOutOfRangeException($"Unknown {nameof(BenchmarkSerializationFormat)}: '{benchmarkSerializationFormat}'.");
            }

            jsonWriter.WriteArrayStart();

            for (int i = 0; i < 2000000; i++)
            {
                namedWriteDelegate.WriteDelegate(jsonWriter);
            }

            jsonWriter.WriteArrayEnd();
        }
        private static void ExecuteNavigateMicroBenchmark(
            BenchmarkPayload payload,
            BenchmarkSerializationFormat benchmarkSerializationFormat)
        {
            IJsonNavigator jsonNavigator = benchmarkSerializationFormat switch
            {
                BenchmarkSerializationFormat.Text => JsonNavigator.Create(payload.Text),
                BenchmarkSerializationFormat.Binary => JsonNavigator.Create(payload.Binary),
                _ => throw new ArgumentOutOfRangeException($"Unknown {nameof(BenchmarkSerializationFormat)}: '{benchmarkSerializationFormat}'."),
            };

            Utils.DrainNavigator(jsonNavigator);
        }
        private static void ExecuteReadMicroBenchmark(
            BenchmarkPayload payload,
            BenchmarkSerializationFormat benchmarkSerializationFormat,
            bool materializeValue)
        {
            IJsonReader jsonReader = benchmarkSerializationFormat switch
            {
                BenchmarkSerializationFormat.Text => JsonReader.Create(payload.Text),
                BenchmarkSerializationFormat.Binary => JsonReader.Create(payload.Binary),
                BenchmarkSerializationFormat.Newtonsoft => NewtonsoftToCosmosDBReader.CreateFromBuffer(payload.Newtonsoft),
                _ => throw new ArgumentOutOfRangeException($"Unknown {nameof(BenchmarkSerializationFormat)}: '{benchmarkSerializationFormat}'."),
            };

            Utils.DrainReader(jsonReader, materializeValue);
        }
Beispiel #4
0
        private static void ExecuteWriteMicroBenchmark(
            Action <IJsonWriter> writeTokens,
            BenchmarkSerializationFormat benchmarkSerializationFormat)
        {
            if (writeTokens == null)
            {
                throw new ArgumentNullException(nameof(writeTokens));
            }

            IJsonWriter jsonWriter;

            switch (benchmarkSerializationFormat)
            {
            case BenchmarkSerializationFormat.Text:
                jsonWriter = JsonWriter.Create(JsonSerializationFormat.Text);
                break;

            case BenchmarkSerializationFormat.Binary:
                jsonWriter = JsonWriter.Create(JsonSerializationFormat.Binary);
                break;

            case BenchmarkSerializationFormat.Newtonsoft:
                jsonWriter = NewtonsoftToCosmosDBWriter.CreateTextWriter();
                break;

            default:
                throw new ArgumentOutOfRangeException($"Unknown {nameof(BenchmarkSerializationFormat)}: '{benchmarkSerializationFormat}'.");
            }

            jsonWriter.WriteArrayStart();

            for (int i = 0; i < 2000000; i++)
            {
                writeTokens(jsonWriter);
            }

            jsonWriter.WriteArrayEnd();
        }