static void Main(string[] args) { do { //AOT(NoJIT)模式应该尽量使用属性而非字段 PropertyData propertyData = AutoCSer.RandomObject.Creator <PropertyData> .Create(randomConfig); json(propertyData); xml(propertyData); //浮点数不仅存在精度问题,而且序列化性能非常低,应该尽量避免使用。特别是.NET Core 的实现,指数越高性能越低。 FloatPropertyData floatPropertyData = AutoCSer.RandomObject.Creator <FloatPropertyData> .Create(randomConfig); json(floatPropertyData); xml(floatPropertyData); FieldData filedData = AutoCSer.RandomObject.Creator <FieldData> .Create(randomConfig); json(filedData); xml(filedData); //浮点数不仅存在精度问题,而且序列化性能非常低,应该尽量避免使用。特别是.NET Core 的实现,指数越高性能越低。 FloatFieldData floatFiledData = AutoCSer.RandomObject.Creator <FloatFieldData> .Create(randomConfig); json(floatFiledData); xml(floatFiledData); //AOT(NoJIT)模式尽量不要使用二进制序列化 //浮点数对二进制序列化无影响 fieldSerialize(floatFiledData); Console.WriteLine(@"Sleep 3000ms "); System.Threading.Thread.Sleep(3000); }while (true); }
/// <summary> /// XML序列化测试 /// </summary> /// <param name="value"></param> private static void xml(FloatFieldData value) { Console.WriteLine(@" http://www.AutoCSer.com/Serialize/Xml.html"); string xml = null; Stopwatch time = new Stopwatch(); time.Start(); for (int index = count; index != 0; --index) { xml = AutoCSer.Xml.Serializer.Serialize(value); } time.Stop(); Console.WriteLine((count / 10000).toString() + "W object + float XML Serialize " + time.ElapsedMilliseconds.toString() + "ms"); time.Reset(); time.Start(); for (int index = count; index != 0; --index) { value = AutoCSer.Xml.Parser.Parse <FloatFieldData>(xml); } time.Stop(); Console.WriteLine((count / 10000).toString() + "W object + float XML Parse " + time.ElapsedMilliseconds.toString() + "ms"); }
/// <summary> /// 二进制序列化测试 /// </summary> /// <param name="value"></param> private static void fieldSerialize(FloatFieldData value) { Console.WriteLine(@" http://www.AutoCSer.com/Serialize/Binary.html"); byte[] bytes = null; Stopwatch time = new Stopwatch(); time.Start(); for (int index = count; index != 0; --index) { bytes = AutoCSer.BinarySerialize.Serializer.Serialize(value); } time.Stop(); Console.WriteLine((count / 10000).toString() + "W object Binary Serialize " + time.ElapsedMilliseconds.toString() + "ms"); time.Reset(); time.Start(); for (int index = count; index != 0; --index) { value = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <FloatFieldData>(bytes); } time.Stop(); Console.WriteLine((count / 10000).toString() + "W object Binary DeSerialize " + time.ElapsedMilliseconds.toString() + "ms"); }
/// <summary> /// JSON序列化测试 /// </summary> /// <param name="value"></param> private static void json(FloatFieldData value) { Console.WriteLine(@" http://www.AutoCSer.com/Serialize/Json.html"); string json = null; Stopwatch time = new Stopwatch(); time.Start(); for (int index = count; index != 0; --index) { json = AutoCSer.Json.Serializer.Serialize(value); } time.Stop(); Console.WriteLine((count / 10000).toString() + "W object + float " + ((json.Length * count * 2) >> 20).toString() + "MB Field Json Serialize " + time.ElapsedMilliseconds.toString() + "ms"); time.Reset(); time.Start(); for (int index = count; index != 0; --index) { value = AutoCSer.Json.Parser.Parse <FloatFieldData>(json); } time.Stop(); Console.WriteLine((count / 10000).toString() + "W object + float " + ((json.Length * count * 2) >> 20).toString() + "MB Field Json Parse " + time.ElapsedMilliseconds.toString() + "ms"); }
static void Main(string[] args) { #if NOJIT int count = 10 * 10000; #else int count = 100 * 10000; #endif bool isJson = true, isJsonThread = true, isXml = false, isBinary = true; AutoCSer.RandomObject.Config randomConfig = new AutoCSer.RandomObject.Config { IsSecondDateTime = true, IsParseFloat = true }; do { //AOT(NoJIT)模式应该尽量使用属性而非字段 PropertyData propertyData = AutoCSer.RandomObject.Creator <PropertyData> .Create(randomConfig); if (isJson) { json(propertyData, count); } if (isJsonThread) { jsonThread(propertyData, count); } if (isXml) { xml(propertyData, count); } //浮点数不仅存在精度问题,而且序列化性能非常低,应该尽量避免使用。特别是.NET Core 的实现,指数越高性能越低。 FloatPropertyData floatPropertyData = AutoCSer.RandomObject.Creator <FloatPropertyData> .Create(randomConfig); if (isJson) { json(floatPropertyData, count); } if (isJsonThread) { jsonThread(floatPropertyData, count); } if (isXml) { xml(floatPropertyData, count); } FieldData filedData = AutoCSer.RandomObject.Creator <FieldData> .Create(randomConfig); if (isJson) { json(filedData, count); } if (isJsonThread) { jsonThread(filedData, count); } if (isXml) { xml(filedData, count); } //浮点数不仅存在精度问题,而且序列化性能非常低,应该尽量避免使用。特别是.NET Core 的实现,指数越高性能越低。 FloatFieldData floatFiledData = AutoCSer.RandomObject.Creator <FloatFieldData> .Create(randomConfig); if (isJson) { json(floatFiledData, count); } if (isJsonThread) { jsonThread(floatFiledData, count); } if (isXml) { xml(floatFiledData, count); } //AOT(NoJIT)模式尽量不要使用二进制序列化 //浮点数对二进制序列化无影响 if (isBinary) { fieldSerialize(floatFiledData, count); } Console.WriteLine(@"Sleep 3000ms "); System.Threading.Thread.Sleep(3000); }while (true); }