Exemplo n.º 1
0
        public void OneTimeSetup()
        {
            var contractResolver = new DefaultContractResolver
            {
                NamingStrategy = new CamelCaseNamingStrategy
                {
                    OverrideSpecifiedNames = false,
                    ProcessDictionaryKeys  = true,
                }
            };

            DefaultSettings = new JsonSerializerSettings
            {
                Formatting       = Formatting.None,
                ContractResolver = contractResolver,
                Converters       = new JsonConverterCollection(),
            };

            var optimizedConverters = new JsonConverterCollection();

            optimizedConverters.Add(DoubleArrayConverter.Create(6));
            OptimizedSettings = new JsonSerializerSettings
            {
                Formatting       = Formatting.None,
                ContractResolver = contractResolver,
                Converters       = optimizedConverters,
            };
        }
        public void Setup()
        {
            Random rand = new Random(42);
            List <IEnumerable <double> > list = new List <IEnumerable <double> >();

            for (int i = 0; i < ArraysCount; i++)
            {
                var item = Enumerable.Range(1, 61).Select(x => rand.NextDouble() * 10000);
                if (Kind == CollectionFlavour.List)
                {
                    list.Add(item.ToList());
                }
                else if (Kind == CollectionFlavour.Array)
                {
                    list.Add(item.ToArray());
                }
                else if (Kind == CollectionFlavour.ROList)
                {
                    list.Add(item.ToList().ToImmutableList());
                }
                else if (Kind == CollectionFlavour.ROArray)
                {
                    list.Add(item.ToList().ToImmutableArray());
                }
                else if (Kind == CollectionFlavour.Enumerable)
                {
                    list.Add(AsEnumerable(item.ToArray()));
                }
                else
                {
                    throw new InvalidOperationException($"Unknown flavor: {Kind}");
                }
            }

            Data = list.ToArray();

            DefaultSettings = new JsonSerializerSettings
            {
                Formatting       = Formatting.None,
                ContractResolver = TheContractResolver,
                Converters       = new JsonConverterCollection(),
            };

            var optimizedConverters = new JsonConverterCollection();

            optimizedConverters.Add(DoubleArrayConverter.Create(6));
            OptimizedSettings = new JsonSerializerSettings
            {
                Formatting       = Formatting.None,
                ContractResolver = TheContractResolver,
                Converters       = optimizedConverters,
            };

            {
                var json = JsonConvert.SerializeObject(Data, DefaultSettings);
                Console.WriteLine($"// DOUBLES-DATA-LENGTH[json.net]: {json.Length} chars");
            }
            {
                var json = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(Data, SystemSettings);
                Console.WriteLine($"// DOUBLES-DATA-LENGTH[system]: {json.Length} bytes");
            }
            {
                var json = JsonConvert.SerializeObject(Data, OptimizedSettings);
                Console.WriteLine($"// DOUBLES-DATA-LENGTH[optimized]: {json.Length} chars");
            }
        }