コード例 #1
0
 static byte[] EncodeTestData(EncoderTarget encoderTarget, string data)
 {
     if (encoderTarget == EncoderTarget.InvariantUtf16 || encoderTarget == EncoderTarget.SlowUtf16)
     {
         return(Encoding.Unicode.GetBytes(data));
     }
     else
     {
         return(Encoding.UTF8.GetBytes(data));
     }
 }
コード例 #2
0
        public void ReaderSystemTextJsonHelloWorld(EncoderTarget encoderTarget)
        {
            var encoder = GetTargetEncoder(encoderTarget);
            var data    = EncodeTestData(encoderTarget, TestJson.HelloWorld);

            foreach (var iteration in Benchmark.Iterations)
            {
                using (iteration.StartMeasurement())
                {
                    for (int i = 0; i < Benchmark.InnerIterationCount; i++)
                    {
                        TestReaderSystemTextJson(data, encoder);
                    }
                }
            }
        }
コード例 #3
0
        public void WriterSystemTextJsonBasic(bool formatted, EncoderTarget encoderTarget)
        {
            var encoder = GetTargetEncoder(encoderTarget);
            var f       = new ArrayFormatter(BufferSize, encoder);

            foreach (var iteration in Benchmark.Iterations)
            {
                using (iteration.StartMeasurement())
                {
                    for (int i = 0; i < Benchmark.InnerIterationCount; i++)
                    {
                        f.Clear();
                        TestWriterSystemTextJsonBasic(formatted, f);
                    }
                }
            }
        }
コード例 #4
0
        public void ReaderNewtonsoftHelloWorld(EncoderTarget encoderTarget)
        {
            var enc    = encoderTarget == EncoderTarget.InvariantUtf8 ? Encoding.UTF8 : Encoding.Unicode;
            var data   = EncodeTestData(encoderTarget, TestJson.HelloWorld);
            var mem    = new MemoryStream(data);
            var reader = new StreamReader(mem, enc, false, 1024, true);

            foreach (var iteration in Benchmark.Iterations)
            {
                using (iteration.StartMeasurement())
                {
                    for (int i = 0; i < Benchmark.InnerIterationCount; i++)
                    {
                        mem.Seek(0, SeekOrigin.Begin);
                        TestReaderNewtonsoft(reader);
                    }
                }
            }
        }
コード例 #5
0
        public void WriterNewtonsoftBasic(bool formatted, EncoderTarget encoderTarget)
        {
            var enc    = encoderTarget == EncoderTarget.InvariantUtf8 ? Encoding.UTF8 : Encoding.Unicode;
            var buffer = new byte[BufferSize];
            var mem    = new MemoryStream(buffer);
            var sw     = new StreamWriter(mem, enc, BufferSize, true);

            foreach (var iteration in Benchmark.Iterations)
            {
                using (iteration.StartMeasurement())
                {
                    for (int i = 0; i < Benchmark.InnerIterationCount; i++)
                    {
                        mem.Seek(0, SeekOrigin.Begin);
                        TestWriterNewtonsoftBasic(formatted, sw);
                    }
                }
            }
        }
コード例 #6
0
        static SymbolTable GetTargetEncoder(EncoderTarget target)
        {
            switch (target)
            {
            case EncoderTarget.InvariantUtf8:
                return(SymbolTable.InvariantUtf8);

            case EncoderTarget.InvariantUtf16:
                return(SymbolTable.InvariantUtf16);

            case EncoderTarget.SlowUtf8:
                return(new FakeUtf8SymbolTable());

            case EncoderTarget.SlowUtf16:
                return(new FakeUtf16SymbolTable());

            default:
                Assert.True(false, "Invalid encoder targetted in test");
                return(null);
            }
        }
コード例 #7
0
        static TextEncoder GetTargetEncoder(EncoderTarget target)
        {
            switch (target)
            {
            case EncoderTarget.InvariantUtf8:
                return(TextEncoder.Utf8);

            case EncoderTarget.InvariantUtf16:
                return(TextEncoder.Utf16);

            case EncoderTarget.SlowUtf8:
                return(TextEncoder.CreateUtf8Encoder(Utf8DigitsAndSymbols));

            case EncoderTarget.SlowUtf16:
                return(TextEncoder.CreateUtf16Encoder(Utf16DigitsAndSymbols));

            default:
                Assert.True(false, "Invalid encoder targetted in test");
                return(null);
            }
        }
コード例 #8
0
 public ArrayFormatterParam(EncoderTarget target)
 {
     _target = target;
 }