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> /// JSON 序列化测试 /// </summary> /// <param name="value"></param> private static void json(FloatPropertyData 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 Property Json Serialize " + time.ElapsedMilliseconds.toString() + "ms"); time.Reset(); time.Start(); for (int index = count; index != 0; --index) { value = AutoCSer.Json.Parser.Parse <FloatPropertyData>(json); } time.Stop(); Console.WriteLine((count / 10000).toString() + "W object + float Property Json Parse " + time.ElapsedMilliseconds.toString() + "ms"); }
/// <summary> /// XML 序列化测试 /// </summary> /// <param name="value"></param> private static void xml(FloatPropertyData 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.Length * count * 2) >> 20).toString() + "MB Property XML Serialize " + time.ElapsedMilliseconds.toString() + "ms"); time.Reset(); time.Start(); for (int index = count; index != 0; --index) { value = AutoCSer.Xml.Parser.Parse <FloatPropertyData>(xml); } time.Stop(); Console.WriteLine((count / 10000).toString() + "W object + float " + ((xml.Length * count * 2) >> 20).toString() + "MB Property XML 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); }